トリガーがトリガーされたためにトリガーを使用してレコードを更新する方法はありませんか?データベースロックのないトリガーによるSQL更新
私たちはUsersテーブルと、挿入、更新、削除時に起動され、変更された値をAuditテーブルに記録するトリガーを持っていますが、監査テーブルをロックして他のトリガーが監査テーブルに表示されます。
編集:はちょうど明確にするために、私が持っている問題は、複数のテーブルが異なるトリガを経由して同じ監査テーブルに報告することなので、1つの表ロック更新されてから、他のすべてのテーブルへの更新。トランザクションがロールバックした場合の懸念事項については、監査テーブルが変更追跡のためだけであり、レコードがロールバックされても監査テーブルがロールバックされなければ問題にはならないという懸念はありません。
私はそれがうまくいくかもしれないと思っていましたが、これが可能かどうか(またはそれを行う方法がわからない)、最初に呼び出されたものの代わりに新しい接続を使用する方法がありますか?
トランザクションがロールバックされた場合、別のプロセスが監査テーブル内のレコードを読み取るようにしますか? –
私は、監査テーブルのデータをロックしたいと思います。実際の問題はおそらく、監査テーブルのリーフノードをホットスポットしている監査テーブルに順次(おそらくクラスタ化された)プライマリキーインデックスがあり、監査テーブルにすべての挿入が同じリーフノードページに入ることです時間。プライマリキーをよりランダムなソートに変更してロック問題を解決する必要があります。 –