2013-03-08 28 views
0

我想在MS SQL中爲INSERT,UPDATE和DELETE創建單個觸發器,但我希望能夠簡單地提取數據3 IF語句什麼是最好的方法來確定是否發生UPDATE,DELETE或INSERT觸發器

我想要做這樣的事情:

DECLARE @PK int 

SELECT @PK = COALESCE(i.PK, d.PK) 
FROM inserted i, deleted d 

這沒有工作,但想知道如果我能在一個查詢做到這一點。

有什麼替代方案?

+0

而不是逗號加入,你試過SELECT @PK = COALESCE(i.PK,d.PK) FROM插入i完全外部連接刪除d上i.PK = d.PK? – 2013-03-08 18:50:42

+0

全外連接工程..謝謝。那就是我下一次要嘗試的:0) – Arcadian 2013-03-08 18:52:31

+0

提取數據到什麼地方? – 2013-03-08 18:55:43

回答

0

我最終使用完全外部聯接

DECLARE @DataIWanted as varchar(255) 

SELECT @DataIWanted = COALESCE(i.TheData,d.TheData) 
FROM inserted i 
    FULL OUTER JOIN deleted d on d.PK=i.PK 

上述查詢將是從刪除的表或插入/更新後的表。假設TheData在數據庫中定義爲NON NULL。

相關問題