INSTEAD OF UPDATE,DELETE,INSERT:确定每个命令

时间:2012-09-04 22:33:15

标签: sql-server-2008 triggers updating

我需要在触发器[UPDATE,DELETE,INSERT]中确定这3个命令中的每一个。对于最后2个我接下来要做的事情:

    IF EXISTS (SELECT * FROM inserted)
      BEGIN 

      END
    ELSE IF EXISTS (SELECT * FROM deleted)
      BEGIN 

      END 

如何更新行? 感谢。

1 个答案:

答案 0 :(得分:3)

不完全确定您要完成的任务,但您可以测试UPDATE如果两者 inserted 之后的值更新)和deleted更新前的值)存在。来自documentation

  

已删除表在DELETE期间存储受影响行的副本   和更新语句。在执行DELETE或UPDATE期间   语句,行从触发器表中删除并传输到   删除的表。删除的表和触发表通常   没有共同的行。

     

插入表存储受影响行的副本   INSERT和更新语句。插入或更新期间   事务,新行被添加到插入的表和   触发表。插入表中的行是新的副本   触发器表中的行。

因此,如果inserted存在但不存在deleted,则为INSERT;如果deleted存在但不存在inserted,则为DELETE;如果它们都存在,那就是UPDATE