gpt4 book ai didi

sql-server - SQL Server 触发器对表进行插入、删除和更新

转载 作者:行者123 更新时间:2023-12-02 10:33:52 24 4
gpt4 key购买 nike

我有一个表 Product 和另一个表 ProductLog

日志表需要跟踪Product 表中的两列。每次对这些列进行插入、更新或删除时,我都需要更新日志表。

我是否需要编写三个单独的触发器,或者一个触发器可以处理这些操作吗?

我还需要知道操作的类型,例如我需要知道日志表中的条目是否是因为插入、删除或更新。如果有人能给我一个例子,那就太好了。

最佳答案

您只需要一个触发器

CREATE TRIGGER [ProductAfter] ON [Product] AFTER INSERT, UPDATE, DELETE

您可以根据触发器主体内可用的inserteddeleted 表中的记录数来确定哪个DML 语句触发触发器。对于 INSERTdeleted 为空,对于 DELETEinserted 为空,对于 UPDATE > inserteddeleted 都不为空。例如,

IF @@ROWCOUNT = 0 -- exit trigger when zero records affected
BEGIN
RETURN;
END;
DECLARE @type CHAR(1);-- 'U' for update, 'D' for delete, 'I' for insert
IF EXISTS(SELECT * FROM inserted)
BEGIN
IF EXISTS(SELECT * FROM deleted)
BEGIN
SET @type ='U';
END
ELSE
BEGIN
SET @type ='I';
END
END
ELSE
BEGIN
SET @type = 'D';
END;

此外,请查看 Tracking Data Changes ,还有另一个选项可以在没有触发器的情况下跟踪更改。

关于sql-server - SQL Server 触发器对表进行插入、删除和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217484/

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