2

簡単な質問が 2 つあります。

  1. SqlServerトリガーはデフォルトでアトミックですか?
  2. そうでない場合、それを達成する方法は?

環境はシンプルです。データベースへの 2 つの異なる接続を持つ 2 人のユーザー (UserA と UserB と呼びましょう) がいます。両方の接続が同時にアクティブになります。

UserA が特定のテーブルに行を挿入すると、トリガーが起動されます (TriggerAtomic と呼びましょう)。TriggerAtomic が起動されたときに、TriggerAtomic が終了するまで UserB が何も実行できないようにする必要があります。明らかに、TriggerAtomic が終了するまで、他のトリガー、関数、手順は実行できません。

4

2 に答える 2

5

INSERT ステートメントの前後にトランザクションを配置し、後でコミットします。SQL トリガーは、それらをトリガーしたステートメントのトランザクションで動作します。

于 2014-09-04T12:35:33.473 に答える