2010-10-26 3 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 и обновлять значение столбца Y с помощью триггера на сервере Sql

ОБНОВЛЕНИЕ Спасибо @codeulike за вашу помощь. Я поставил правильный триггер t-sql для ответа.

+0

что ошибка? BTW, что форматирование suks –

+0

Я хочу обновить IsNormalized до 0, когда AbsoluteUrl изменен! Но этот триггер не выполняет мою цель. – Sadegh

ответ

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

Смежные вопросы