我需要在触发器[UPDATE,DELETE,INSERT]中确定这3个命令中的每一个。对于最后2个我接下来要做的事情:
IF EXISTS (SELECT * FROM inserted)
BEGIN
END
ELSE IF EXISTS (SELECT * FROM deleted)
BEGIN
END
如何更新行? 感谢。
答案 0 :(得分:3)
不完全确定您要完成的任务,但您可以测试UPDATE
如果两者 inserted
( 之后的值更新)和deleted
(更新前的值)存在。来自documentation:
已删除表在DELETE期间存储受影响行的副本 和更新语句。在执行DELETE或UPDATE期间 语句,行从触发器表中删除并传输到 删除的表。删除的表和触发表通常 没有共同的行。
插入表存储受影响行的副本 INSERT和更新语句。插入或更新期间 事务,新行被添加到插入的表和 触发表。插入表中的行是新的副本 触发器表中的行。
因此,如果inserted
存在但不存在deleted
,则为INSERT
;如果deleted
存在但不存在inserted
,则为DELETE
;如果它们都存在,那就是UPDATE
。