デッドロックの問題があります..
データベースの更新に SQL 依存関係を提供しようとしています。
これを行うには、一連のテーブルにトリガーを作成します。テーブルが変更されると、セカンダリ テーブルの整数をインクリメントします。[dbo].[カウンター]. 次に、このテーブルに SQL 依存関係を配置して、どのテーブルがコードから更新されたかを確認します。
ただし、トリガーを配置しているターゲット テーブルはトランザクションで使用される可能性があります。その場合、トランザクションは非常に簡単にデッドロックします。
つまり、tbl1 にはカウンター テーブルを更新するための挿入/更新/削除のトリガーがあります tbl2 にはカウンター テーブルを更新するための挿入/更新/削除のトリガーがあります
トランザクション A がスレッド 1 で発生 tbl1 が変更され、カウンター テーブルの更新がトリガーされる
トランザクション B がスレッド 2 で発生 tbl2 が変更され、カウンター テーブルの更新がトリガーされ、スレッド 2 がブロックされ、スレッド 1 を待機する
一方、スレッド 1 では、トランザクション A が続行され、別のテーブル (tbl1 または tbl2) が更新されます。
ここでデッドロックが発生し、スレッドの 1 つが被害者として選択されます。
私の質問は、デッドロックの可能性を取り除くトリガーを作成するより良い方法があるかどうかです。この問題を回避するために、ASP.NET の既定の SQLDependency がどのように機能するか知っている人はいますか?