每当主表“Table1”中发生插入、更新或删除时,我想将行插入审计表中 - 无论更改/插入哪一列。我还想在插入、更新或删除时添加 I、U 或 D。对于插入和删除,我正在检查插入和删除的表中是否存在行。进行更新的最佳方式是什么。
我的插入和删除代码是:
CREATE TRIGGER [dbo].[tr_Table1_InsertUpdate_Table1History_Insert]
ON [dbo].[Table1]
FOR INSERT, DELETE, UPDATE
AS
BEGIN
IF EXISTS(SELECT * FROM Inserted)
BEGIN
INSERT INTO Table1History(...., ModificationType)
SELECT ..., 'I'
FROM Inserted
END
IF EXISTS(SELECT * FROM Deleted)
BEGIN
INSERT INTO Table1History(..., ModificationType)
SELECT ..., 'D'
FROM Deleted
END
END
GO
请帮忙!
最佳答案
对于更新,行的原始值将添加到已删除的表中,而行的新值将添加到插入的表中。因此,要识别插入、删除和更新,您将执行以下操作
- 插入 - 获取插入中未删除的行
- 删除 - 从已删除的行中获取未插入的行。
- 更新 - 获取插入和删除的行
关于sql-server - 插入、更新、删除触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4111498/