2010-10-26 99 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