gpt4 book ai didi

sql - 如何识别 SQL Server 触发器中的操作类型(插入、更新、删除)

转载 作者:行者123 更新时间:2023-12-01 23:07:10 25 4
gpt4 key购买 nike

我们在 SQL Server 中使用以下触发器来维护历史记录,现在我需要识别插入、更新或删除等操作。找了些资料HERE但它不适用于 SQL Server。

CREATE TRIGGER audit_guest_details ON [PMS].[GSDTLTBL] 
FOR INSERT,UPDATE,DELETE
AS
DECLARE @SRLNUB1 INT;
DECLARE @UPDFLG1 DECIMAL(3,0);

SELECT @SRLNUB1 = I.SRLNUB FROM inserted I;
SELECT @UPDFLG1 = I.UPDFLG FROM inserted I;

BEGIN
/* Here I need to identify the operation and insert the operation type in the GUEST_ADT 3rd field */
insert into dbo.GUEST_ADT values(@SRLNUB1,@UPDFLG1,?);

PRINT 'BEFORE INSERT trigger fired.'
END;
GO

但在这里我需要识别操作并相应地插入操作类型。

这里我不想为每个操作创建三个触发器

最佳答案

对于已插入:仅插入行。
对于更新:行被插入和删除。
对于已删除:仅在已删除行中。

DECLARE @event_type varchar(42)
IF EXISTS(SELECT * FROM inserted)
IF EXISTS(SELECT * FROM deleted)
SELECT @event_type = 'update'
ELSE
SELECT @event_type = 'insert'
ELSE
IF EXISTS(SELECT * FROM deleted)
SELECT @event_type = 'delete'
ELSE
--no rows affected - cannot determine event
SELECT @event_type = 'unknown'

关于sql - 如何识别 SQL Server 触发器中的操作类型(插入、更新、删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26033037/

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