2010-06-27 62 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