2016-09-01 19 views
0

假設我有2個表:SQL Server 2008中創建觸發器,設置表的列空刪除後行中的另一個表

T1     T2 
--------------  -------------------- 
id name   ver lyr1 lyr2 
--------------  -------------------- 
1 apple   1 1 1 
2 banana   2 1 2 
3 orange   3 3 3 
4 peach   4 2 3 
        5 1 4 

我想更新lyr1和lyr2值爲null每當行被刪除在T1中。所以,當ID = 3被刪除,結果將是

T1     T2 
--------------  -------------------- 
id name   ver lyr1 lyr2 
--------------  -------------------- 
1 apple   1 1  1 
2 banana   2 1  2 
4 peach   3 null null 
        4 2  null 
        5 1  4 

這是我到目前爲止有:

CREATE TRIGGER trigDelFruit on T1 
AFTER DELETE 
AS 
BEGIN 
    SET NOCOUNT ON; 

    UPDATE T2 
    SET lyr1 = NULL, lyr2 = NULL 
    FROM T2 
    JOIN DELETED ON lyr1 = Deleted.id AND lyr2 = Deleted.id   
END 

回答

0

- 您可以不設置此方法設置特定列。但您可以使用「case when」語句實現相同的功能。

CREATE上T1 TRIGGER trigDelFruit AFTER DELETE AS BEGIN SET NOCOUNT ON;
declare @id int; select @ id = id from deleted; 更新T2集 lyr1 = lyr1 = @id時的情況,否則lyr1結束 ,lyr2 = lyr2 = id時的情況,否則爲空lyr2結束; END

+0

非常好。謝謝。對不起,需要一段時間才能回來。 – Tres

相關問題