0

db テーブル Foo に AFTER UPDATE トリガーがあります。Foo で UPDATE が発生するたびに、監査レコードを Audit テーブルに INSERTS します。

実行中の 3 つの個別のサービスがあり、同じ Foo レコードを更新することがありますが、フィールドは異なります。

問題は、同じ行に 3 つの UPDATE がある場合です。これはほぼ同時に発生しているようです。AFTER UPDATE トリガーが 1 つしか起動されていないことがわかります。3 と予想されるところに 1 つの監査レコードしか表示されません。

なぜこれが起こるのかアドバイスはありますか?

4

1 に答える 1

0

次の理由が考えられます。

  1. AFTER UPDATE トリガーは、トリガー SQL ステートメントで指定されたすべての操作が正常に実行された場合にのみ起動されます。このトリガーが起動する前に、すべての参照カスケード アクションと制約チェックも成功する必要があります。【引用】知らないうちに他のアップデートが失敗しているかもしれません。
  2. UPDATE が実行時間の長いトランザクションの一部である場合、他の更新は最初の更新がコミットされるのを待っている可能性があります。
  3. トリガーにバグがあります。

とにかく、SQL Server がすぐに提供する監査機能を調べましたか?

于 2013-11-26T13:06:05.973 に答える