2010-10-26 100 views
0
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的答案。

+0

有什么错误?顺便说一句,格式化suks – 2010-10-26 08:57:46

+0

当AbsoluteUrl改变时,我想更新IsNormalized为0!但是这个触发器不能执行我的目的 – Sadegh 2010-10-26 08:59:46

回答

0
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] 
3

假设你有一个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