2012-09-05 43 views
0

我咬緊牙關並開始瞭解觸發器以支持我的應用程序的要求。我創建了一個測試觸發(在測試表),如何添加條件,以便UPDATE語句隻影響那些記錄插入INSERT觸發器中UPDATE語句的窄條件

編輯 - 我在別處找到了一個例子鏈接到inserted表,並將其似乎工作,只是想與人做一個完整的檢查,以確保沒有什麼明顯的錯誤,因爲我不想搞砸了!

ALTER TRIGGER ztblTest_INSERT 
    ON we_ci_db.dbo.ztblTest 
    AFTER INSERT 
AS 
BEGIN 
SET NOCOUNT ON; 
UPDATE ztblTest 
SET TestFieldB=we_ci_db.dbo.ztblTest.TestFieldA 
WHERE TestID IN (SELECT DISTINCT TestID FROM inserted) 

END 
GO 

回答

2

有用於插入/更新的記錄叫inserted臨時表。這應該與你正在更新的表具有相同的結構,所以你可以根據你需要的任何標準(或者在where子句中使用,就像你在你的問題中提到的那樣)加入它。

儘管與您的問題沒有直接關係,因爲您的觸發器只關心插入,還有一個用於觸發器期間刪除記錄的臨時表,稱爲deleted

在這個MSDN article上有一些使用這些臨時表的例子。