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