这类似于SQL Server 2008 中比较删除和插入的表,但结果不是我想要的。
如果特定列发生更改,我确实希望触发器触发,但是我们拥有的程序会删除所有信息并在每次保存时重新插入所有新信息。没有简单的更新。
我想写入审计表,但前提是该特定列在保存后发生更改。
ALTER TRIGGER [dbo].[deleted]
ON [dbo].[DispTech]
FOR DELETE, INSERT
AS
SET NOCOUNT ON;
IF (SELECT serviceman FROM deleted) <> (SELECT ServiceMan FROM inserted)
BEGIN
INSERT INTO misc.dbo.DeletedTest ("Status", dispatch, serviceman)
SELECT
'Deleted', d.Dispatch, d.ServiceMan
FROM
deleted d
INSERT INTO misc.dbo.DeletedTest ("Status", dispatch, serviceman)
SELECT
'Inserted', i.Dispatch, i.ServiceMan
FROM
inserted i
END
这不起作用,因为它会为所有内容返回 NULL。我知道如果每次都将所有内容都转储到审计表中,我可以将其全部整理出来,但我真的想要一组更干净的数据并希望将其用于其他处理。