0

トリガー [UPDATE,DELETE,INSERT] のこの 3 つのコマンドのそれぞれを決定する必要があります。最後の 2 つは次に行います。

    IF EXISTS (SELECT * FROM inserted)
      BEGIN 

      END
    ELSE IF EXISTS (SELECT * FROM deleted)
      BEGIN 

      END 

行を更新するにはどうすればよいですか? ありがとう。

4

1 に答える 1

3

何を達成しようとしているのか正確にはわかりませんが、 (更新の値) と(更新前の値) の両方UPDATEが存在するかどうかをテストできます。ドキュメントから: inserteddeleted

削除されたテーブルには、DELETE およびUPDATEステートメント中に影響を受ける行のコピーが格納されます。DELETE または UPDATE ステートメントの実行中に、行はトリガー テーブルから削除され、削除されたテーブルに転送されます。削除されたテーブルとトリガー テーブルには、通常、共通の行はありません。

挿入されたテーブルには、INSERT およびUPDATEステートメント中に影響を受ける行のコピーが格納されます。挿入または更新トランザクション中に、挿入されたテーブルとトリガー テーブルの両方に新しい行が追加されます。挿入されたテーブルの行は、トリガー テーブルの新しい行のコピーです。

したがって、inserted存在するが存在しない場合deleted、それはINSERT; です。deleted存在するが存在しない場合inserted、それはDELETE; です。両方が存在する場合、それはUPDATE.

于 2012-09-04T22:36:44.363 に答える