トリガー [UPDATE,DELETE,INSERT] のこの 3 つのコマンドのそれぞれを決定する必要があります。最後の 2 つは次に行います。
IF EXISTS (SELECT * FROM inserted)
BEGIN
END
ELSE IF EXISTS (SELECT * FROM deleted)
BEGIN
END
行を更新するにはどうすればよいですか? ありがとう。
トリガー [UPDATE,DELETE,INSERT] のこの 3 つのコマンドのそれぞれを決定する必要があります。最後の 2 つは次に行います。
IF EXISTS (SELECT * FROM inserted)
BEGIN
END
ELSE IF EXISTS (SELECT * FROM deleted)
BEGIN
END
行を更新するにはどうすればよいですか? ありがとう。
何を達成しようとしているのか正確にはわかりませんが、 (更新後の値) と(更新前の値) の両方UPDATE
が存在するかどうかをテストできます。ドキュメントから: inserted
deleted
削除されたテーブルには、DELETE およびUPDATEステートメント中に影響を受ける行のコピーが格納されます。DELETE または UPDATE ステートメントの実行中に、行はトリガー テーブルから削除され、削除されたテーブルに転送されます。削除されたテーブルとトリガー テーブルには、通常、共通の行はありません。
挿入されたテーブルには、INSERT およびUPDATEステートメント中に影響を受ける行のコピーが格納されます。挿入または更新トランザクション中に、挿入されたテーブルとトリガー テーブルの両方に新しい行が追加されます。挿入されたテーブルの行は、トリガー テーブルの新しい行のコピーです。
したがって、inserted
存在するが存在しない場合deleted
、それはINSERT
; です。deleted
存在するが存在しない場合inserted
、それはDELETE
; です。両方が存在する場合、それはUPDATE
.