sql-server – 如何创建仅影响已更新/插入的行的触发器?
发布时间:2020-12-12 16:24:13 所属栏目:MsSql教程 来源:网络整理
导读:我有一个有两列的表,我需要一个(columnB)作为另一个列的副本(columnA).因此,如果插入或更新了一行,我希望将columnA中的值复制到columnB. 这就是我现在拥有的: CREATE TRIGGER tUpdateColBON productsFOR INSERT,UPDATE AS BEGIN UPDATE table SET columnB =
我有一个有两列的表,我需要一个(columnB)作为另一个列的副本(columnA).因此,如果插入或更新了一行,我希望将columnA中的值复制到columnB.
这就是我现在拥有的: CREATE TRIGGER tUpdateColB ON products FOR INSERT,UPDATE AS BEGIN UPDATE table SET columnB = columnA END 现在的问题是查询会影响所有行,而不仅仅是更新或插入的行.我该如何解决这个问题? 解决方法假设您有一个主键列id,(并且您应该有一个主键),请加入到inserted表中(使触发器能够处理多行):CREATE TRIGGER tUpdateColB ON products FOR INSERT,UPDATE AS BEGIN UPDATE table SET t.columnB = i.columnA FROM table t INNER JOIN inserted i ON t.id = i.id END 但如果ColumnB始终是ColumnA的副本,为什么不创建Computed column? Using the inserted and deleted Tables (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |