2010-06-27 58 views
0

考虑对表A. 触发after update对于每一个更新触发器应更新表B. 所有记录然后考虑这个查询:多行T-SQL更新触发

UPDATE A SET X = Y 

显然有更新了很多行。更新后触发器发生。 现在如果触发器将使用inserted表,并且您想要用临时表inserted的每一行更新表B,并且在MSDN中不建议使用游标,那么您将如何执行该操作?

谢谢

+0

行你需要发布两个表的结构,以及它们如何相互关联以获得准确答案。 – Oded 2010-06-27 18:16:23

回答

2

我不知道你想在你的更新触发器到底该怎么做,但你可以如

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

或别的东西 - 你需要告诉我们更多关于你想用表B做什么!但是,无需使用游标并处理Inserted表中的多行,就可以更新,插入或进行其他操作。

+0

这正是我想知道的..我可以将它与插入表中的所有行进行匹配。 – 2010-06-27 18:21:17

1

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

如果是这样的话,你可以使用子查询或inserted加入选择需要改变的表B.

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

是的,那两个表都是PK - FK约束.. – 2010-06-27 18:22:05