跟踪第X列的更改并通过Sql Server中的触发器更新列Y的值
问题描述:
CREATE TRIGGER ChangesTracker on [SearchEngine].[Urls]
FOR UPDATE, INSERT AS
UPDATE [SearchEngine].[Urls]
SET [IsNormalized] = 0
WHERE [AbsoluteUrl] NOT IN or <> or != (SELECT [AbsoluteUrl] FROM INSERTED)
怎么了?跟踪第X列的更改并通过Sql Server中的触发器更新列Y的值
UPDATE 感谢@codeulike的帮助。我把正确的触发t-sql的答案。
答
CREATE TRIGGER [SearchEngine].[ChangesTracker]
ON [SearchEngine].[Urls] FOR UPDATE
AS
UPDATE [SearchEngine].[Urls]
SET [SearchEngine].[Urls].[IsNormalized] = 0
From [Inserted]
INNER JOIN [Deleted]
ON [Inserted].[UrlId] = [Deleted].[UrlId]
WHERE [Inserted].[AbsoluteUrl] != [Deleted].[AbsoluteUrl]
答
假设你有一个ID列:
CREATE TRIGGER ChangesTracker on [SearchEngine].[Urls]
FOR UPDATE, INSERT AS
UPDATE X
SET X.[IsNormalized] = 0
FROM [SearchEngine].[Urls] X JOIN INSERTED I ON X.id = I.id
WHERE x.[AbsoluteUrl] != I.[AbsoluteUrl]
+0
谢谢马克,你是对的。需要做一些改变才能工作。 – Sadegh 2010-10-26 10:03:53
有什么错误?顺便说一句,格式化suks – 2010-10-26 08:57:46
当AbsoluteUrl改变时,我想更新IsNormalized为0!但是这个触发器不能执行我的目的 – Sadegh 2010-10-26 08:59:46