具有多行的T-SQL Update触发器

时间:2010-06-27 18:13:01

标签: tsql triggers

考虑表A上的触发器after update。 对于每次更新,触发器应更新表B中的所有记录。 然后考虑这个查询:

UPDATE A SET X = Y 

显然有很多行已更新。更新后,触发发生。 现在,如果触发器将使用inserted表,并且您希望使用临时表inserted的每一行更新表B,并且在MSDN中不建议使用游标,那么您将如何使用?去做?

谢谢

2 个答案:

答案 0 :(得分:2)

我不知道你在更新触发器中想要做什么,但你可以这样做。

UPDATE dbo.B
SET someColumn = i.Anothervalue
FROM Inserted i
WHERE b.Criteria = i.Criteria

或其他 - 您需要告诉我们更多关于您想要用表B做什么的信息!但是,无需使用游标并处理Inserted表中的多行,就可以更新,插入或其他内容。

答案 1 :(得分:1)

我将假设表A通过一个键与表B相关(必须假设,因为你没有发布任何细节)。

如果是这种情况,您可以使用子查询或与inserted的联接来选择需要在表B上更改的行。

UPDATE tableB B
SET B.colx = someValue
WHERE B.id IN
(
    SELECT b_id 
    FROM INSERTED
)