gpt4 book ai didi

sql - 如何识别触发了哪个触发器(更新或删除)

转载 作者:行者123 更新时间:2023-12-04 15:57:12 25 4
gpt4 key购买 nike

如果我使用的触发器在每次更新或删除我的付款表时触发,我如何识别发生的触发器类型(如果我解释得更多,触发函数是由于更新记录或删除记录而调用的。)

因为我需要将这些信息存储在我的另一张 table 上。

最佳答案

使用说明 : 当你向表中插入数据时,只有 'inserted' 有新插入的行;当您从表中删除数据时,只有“已删除”具有已删除的行;更新表时,“插入”保存新行,“删除”保存旧行。
我认为这个样本可以给你一个提示。 (SQL Server 2012)
sample :
示例表定义:


create table Customer (
ID int identity(1,1) not null,
FirstName varchar(30),
LastName varchar(30))
扳机:

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
测试代码:

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

关于sql - 如何识别触发了哪个触发器(更新或删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15593636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com