我正在开发一个进程,当为表中的记录更改版本时,该进程将创建历史表。我的触发器如下。它正在工作,但它是在每次更新时更新历史表,无论值是否不同。如果ProductVersion不同,我只想写入历史表。
任何帮助都会很棒。
CREATE TRIGGER UpdateServerControlSqlVersionHistory ON [monitor].[ServerControl]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO monitor.ServerSqlVersionHistory
SELECT i.ServerControlID, i.SqlLinkedServerName, i.ProductVersion, d.ProductVersion, GETDATE()
FROM INSERTED i
FULL OUTER JOIN DELETED d
ON i.ServerControlID = d.ServerControlID
END
GO
答案 0 :(得分:1)
很难确定,因为我们并不确切知道您正在做什么更新,但请尝试
将该条件添加到联接中,并从FULL OUTER
:
CREATE TRIGGER UpdateServerControlSqlVersionHistory ON [monitor].[ServerControl]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO monitor.ServerSqlVersionHistory
SELECT i.ServerControlID, i.SqlLinkedServerName, i.ProductVersion, d.ProductVersion, GETDATE()
FROM INSERTED i
JOIN DELETED d
ON i.ServerControlID = d.ServerControlID
AND i.ProductVersion <> d.ProductVersion
END
GO