如果我使用的触发器在每次更新或删除我的支付表时触发,我如何识别发生的触发类型(如果我解释更多,则因更新记录或删除记录而调用触发器功能.)
因为我需要将这些信息存储在我的另一张桌子上.
说明:当您将数据插入表中时,只有'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.'
测试结果: