加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:57:07 所属栏目:MsSql教程 来源:网络整理
导读:如何确定UPDATE触发器中是否有变化?例如,我有一个名为person的表,只有一列NAME包含值’Mike’。如果我跑步 UPDATE person SET NAME = 'Mike' 如何在更新触发器中确定没有变化?我知道 UPDATE(COL) 语句,但我不想迭代列。有没有办法完成这个? 解决方法 更
如何确定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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读