SQL Server 2005では、トリガーの起動に関与しているオブジェクトをトリガーが検出する方法はありますか?これを使用して、1つのストアドプロシージャのトリガーを無効にします。
現在のトランザクションに対してのみトリガーを無効にする他の方法はありますか?次のコードを使用することもできますが、間違えなければ、同時トランザクションにも影響します。これは悪いことです。
DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } ON { object_name | DATABASE | ALL SERVER } [ ; ]
ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } ON { object_name | DATABASE | ALL SERVER } [ ; ]
可能であれば、NoTrigger = null
テーブルをできるだけ小さくしたいので、テーブルに「NoTrigger」フィールドを入れて、を実行する手法は避けたいと思います。
トリガーを避けたい理由は、テーブルを手動で更新するために重要なロジックが含まれているためですが、ストアドプロシージャがこのロジックを処理します。これは非常によく使われる手順になるので、速くしたいと思います。
トリガーは暗黙的なトランザクションを開始するため、サーバーに追加のオーバーヘッドを課します。トリガーが実行されるとすぐに、新しい暗黙のトランザクションが開始され、トランザクション内のデータ取得は影響を受けるテーブルのロックを保持します。
差出人:http ://searchsqlserver.techtarget.com/tip/1,289483,sid87_gci1170220,00.html#trigger