如何识别触发的触发器(更新或删除)

New*_*per 4 sql triggers

如果我使用的触发器在每次更新或删除我的支付表时触发,我如何识别发生的触发类型(如果我解释更多,则因更新记录或删除记录而调用触发器功能.)

因为我需要将这些信息存储在我的另一张桌子上.

ljh*_*ljh 9

说明:当您将数据插入表中时,只有'inserted'具有新插入的行; 当您从表中删除数据时,只有"已删除"具有已删除的行; 更新表时,'inserted'保存新行,'deleted'保存旧行.

我想这个样本可以给你一个提示.(SQL Server 2012)
示例:
示例表定义:

__CODE__
Run Code Online (Sandbox Code Playgroud) 触发:

CREATE TRIGGER TrackAction
ON Customer
AFTER INSERT, UPDATE, DELETE
AS 
BEGIN
   DECLARE @DELETEDCOUNT INT
   DECLARE @INSERTEDCOUNT INT
   SELECT @DELETEDCOUNT = COUNT() FROM deleted
   SELECT @INSERTEDCOUNT = COUNT() FROM inserted
   IF(@DELETEDCOUNT&@INSERTEDCOUNT > 0 )
       PRINT 'Trigger by update action'
   ELSE IF (@DELETEDCOUNT > 0 )
       PRINT 'Trigger by delete action'
   ELSE IF (@INSERTEDCOUNT > 0 )
       PRINT 'Trigger by insert action'
END
Test code:

insert into Customer 
values ('Bob','Ryan')
update customer 
set FirstName = 'Bob Jr.'
where FirstName = 'Bob'
delete customer 
where FirstName = 'Bob Jr.'
测试结果:
1.按插入操作
触发2.按更新操作
触发3.通过删除操作触发