Použijte CONTEXT_INFO (Transact-SQL) . V postupu nastavte hodnotu, která upozorní spouštěč, aby nic nezaznamenal:
--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
Ve spouštěči zkontrolujte CONTEXT_INFO a určete, zda potřebujete něco udělat:
--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
pro každého, kdo pouze provádí nepoctivé vkládání/aktualizaci/mazání, nebude mít nastaveno CONTEXT_INFO a spouštěč zaznamená změnu. Hodnotu, kterou vložíte do CONTEXT_INFO, jako je název tabulky nebo @@SPID atd., by se vám mohla líbit, pokud si myslíte, že se podvodný kód pokusí použít i CONTEXT_INFO.