2012-06-07 3 views
3

Я хочу, чтобы мой триггер выполнялся только при обновлении, если старое значение не соответствует новому значению. Если значение остается неизменным, я не хочу, чтобы я исполнял блок.SQL, если инструкция update() для триггера

if UPDATE(interview) 
    BEGIN 
    EXEC sp_send_dbmail 
      @profile_name = 'SM_PRFL', 
    @recipients = 'email', 

    @subject = 'this is a test' , 
    @body = 'message' 
      END 
+0

Не забыл свой upvote, а самое главное опубликовать что-то в комментариях к моему ответу, чтобы объяснить, нужно ли изменить что-нибудь так, чтобы люди, которые приходят сюда в будущем может ссылаться решение и узнать, что вы узнали от него! ;) – Faraday

ответ

0

Взгляните на следующую ссылку, обратите внимание на «Использование вставленные и удаленные таблицы в ВМЕСТО Триггеры»: http://msdn.microsoft.com/en-us/library/ms191300(SQL.90).aspx

Это позволит вам выполнять свои тесты и выполнить требуемые действия. Например, вы могли бы ...

If (Update(interview)) 
BEGIN 
    -- If column esb has been changed from its previous value 
    IF ((SELECT esb FROM INSERTED) <> select esb FROM DELETED) 
    BEGIN 
    EXEC sp_send_dbmail 
      @profile_name = 'SM_PRFL', 
    @recipients = 'email', 

    @subject = 'this is a test' , 
    @body = 'message' 
    END 
END