CONTEXT_INFO (Transact-SQL) を使用します .この手順では、何も記録しないようにトリガーに警告する値を設定します:
--in the procedure doing the insert/update/delete DECLARE @CONTEXT_INFO varbinary(128) SET @CONTEXT_INFO =cast('SkipTrigger=Y'+REPLICATE(' ',128) as varbinary(128)) SET CONTEXT_INFO @CONTEXT_INFO --do insert/update/delete that will fire the trigger SET CONTEXT_INFO 0x0
プレ>トリガーで CONTEXT_INFO をチェックし、何かする必要があるかどうかを判断します:
--here is the portion of the trigger to retrieve the value: IF CAST(CONTEXT_INFO() AS VARCHAR(128))='SkipTrigger=Y' BEGIN --log your data here END
プレ>不正な挿入/更新/削除を行っているだけの人は CONTEXT_INFO を設定しておらず、トリガーは変更を記録します。テーブル名や @@SPID など、CONTEXT_INFO に入力した値に気を配ることができます。不正なコードが CONTEXT_INFO も使用しようとする可能性があると思われる場合。