2011-12-13 31 views
1

我有一個名爲表A的表,並且我創建了一個處理INSERT,UPDATES,DELETES的觸發器。現在爲了處理我的下一步,我想知道DML操作發生了什麼。我如何知道更新/插入/刪除是否發生。如何知道表中是否發生了更新/插入/刪除

您的想法,反饋非常感謝!

+0

或者你創建的每一個事件 – Magnus 2011-12-13 17:16:09

+0

這是一個可能的解決方案一個觸發。我想知道是否有一個地方可以一次完成。最佳做法是什麼? – SaiBand 2011-12-13 17:26:46

回答

2

在觸發器內部,您可以使用兩個特殊表格:INSERTEDDELETED。如果一行僅存在於INSERTED表中,則發生INSERT操作。同樣,如果一行只存在於DELETED表中,則發生DELETE操作。如果該行在兩個表中都存在,則發生UPDATE,並且INSERTED表保存新值,而DELETED表保存舊值。

插入的行:

SELECT i.* 
    FROM INSERTED i 
     LEFT JOIN DELETED d 
      ON i.PrimaryKey = d.PrimaryKey 
    WHERE d.PrimaryKey IS NULL 

刪除的行:

SELECT d.* 
    FROM DELETED d 
     LEFT JOIN INSERTED i 
      ON d.PrimaryKey = i.PrimaryKey 
    WHERE i.PrimaryKey IS NULL 

更新行:

SELECT * 
    FROM INSERTED i 
     INNER JOIN DELETED d 
      ON i.PrimaryKey = d.PrimaryKey 
相關問題