sql-server – 如何确定t-sql中更新触发器中是否有任何变化

前端之家收集整理的这篇文章主要介绍了sql-server – 如何确定t-sql中更新触发器中是否有任何变化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何确定UPDATE触发器中是否有变化?例如,我有一个名为person的表,只有一列NAME包含值’Mike’。如果我跑步
UPDATE person SET NAME = 'Mike'

如何在更新触发器中确定没有变化?我知道
UPDATE(COL)
语句,但我不想迭代列。有没有办法完成这个?

解决方法

更新(列)仅表示列参与更新,但不表示其值已更改。例如,
update Person SET Name = Name

即使在任何行中没有更改名称,在update(name)中也会生成true。

要检查新值是否与旧版本不同,您将使用except,因为除了将删除底部集中存在的顶层中的行。由于人桌可能具有主键,所以没有删除删除的对方的已更改项目的危险。但是,如果您决定将*更改为有趣列的列表,请确保包含主键。

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

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

原文链接:https://www.f2er.com/mssql/84520.html

猜你在找的MsSQL相关文章