3

古い値が新しい値と等しくない場合にのみ、トリガーを更新時に実行したいと考えています。値が同じままである場合、ブロックを実行する必要はありません。

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

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

1 に答える 1

0

次のリンクを見て、「INSTEAD OF Triggers で挿入および削除されたテーブルを使用する」を探します: 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
于 2012-06-07T15:52:23.883 に答える