2012-06-07 183 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

不要忘記我給予好評,最重要的張貼在評論的東西我的答案來解釋您是否需要改變什麼,這樣誰到這裏來,將來人們可以參考解決方案並瞭解您從中學到了什麼! ;) – Faraday

回答

0

看一看下面的鏈接,查找「在INSTEAD OF觸發器使用inserted和deleted表」: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