1
我有一個名爲表A的表,並且我創建了一個處理INSERT,UPDATES,DELETES的觸發器。現在爲了處理我的下一步,我想知道DML操作發生了什麼。我如何知道更新/插入/刪除是否發生。如何知道表中是否發生了更新/插入/刪除
您的想法,反饋非常感謝!
我有一個名爲表A的表,並且我創建了一個處理INSERT,UPDATES,DELETES的觸發器。現在爲了處理我的下一步,我想知道DML操作發生了什麼。我如何知道更新/插入/刪除是否發生。如何知道表中是否發生了更新/插入/刪除
您的想法,反饋非常感謝!
在觸發器內部,您可以使用兩個特殊表格:INSERTED
和DELETED
。如果一行僅存在於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
或者你創建的每一個事件 – Magnus 2011-12-13 17:16:09
這是一個可能的解決方案一個觸發。我想知道是否有一個地方可以一次完成。最佳做法是什麼? – SaiBand 2011-12-13 17:26:46