我有一个名为Table A的表,我创建了一个处理INSERTS,UPDATES,DELETES的触发器。现在,为了处理我的后续步骤,我想知道发生了什么DML操作。我如何知道是否发生了更新/插入/删除。
您的想法,反馈非常感谢!
答案 0 :(得分:2)
在触发器内部,您可以使用两个特殊的桌子:INSERTED
和DELETED
。如果只在INSERTED
表中存在一行,则发生INSERT操作。同样,如果只在DELETED
表中存在一行,则会发生DELETE操作。如果两个表中都存在该行,则发生UPDATE,INSERTED
表保存新值,而DELETED
表保存旧值。
INSERTed Rows:
SELECT i.*
FROM INSERTED i
LEFT JOIN DELETED d
ON i.PrimaryKey = d.PrimaryKey
WHERE d.PrimaryKey IS NULL
DELETEd Rows:
SELECT d.*
FROM DELETED d
LEFT JOIN INSERTED i
ON d.PrimaryKey = i.PrimaryKey
WHERE i.PrimaryKey IS NULL
UPDATEd Rows:
SELECT *
FROM INSERTED i
INNER JOIN DELETED d
ON i.PrimaryKey = d.PrimaryKey