gpt4 book ai didi

sql-server - 如何确定 t-sql 中的更新触发器是否发生任何更改

转载 作者:行者123 更新时间:2023-12-02 00:33:19 24 4
gpt4 key购买 nike

如何确定 UPDATE 触发器中是否发生了更改?例如,我有一个名为 person 的表,其中只有一列 NAME,其中包含值“Mike”。如果我运行

UPDATE person SET NAME = 'Mike' 

如何确定更新触发器中没有任何更改?我知道关于 更新(列)语句,但我不想迭代列。还有其他方法可以实现这一点吗?

最佳答案

Update(column) 仅表明该列参与了更新,但并未表明其值已更改。例如,

update Person SET Name = Name

即使任何行中的名称均未更改,update(name) 也会产生 true。

要检查新值是否与旧值不同,您可以使用 except因为 except 将从顶部集中删除底部集中存在的行。由于人员表可能具有主键,因此不存在删除已删除的对应项的已更改项目的危险。但是,如果您决定将 * 更改为有趣的列列表,请务必包含主键。

insert into logTable (ID)
select a.ID
from
(
select * from Inserted
except
select * from Deleted
) a

额外的好处是这也适用于插入,因为删除将为空并且插入的所有行都将返回。

关于sql-server - 如何确定 t-sql 中的更新触发器是否发生任何更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10550277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com