2017-08-31 120 views
-3

我有一个跟踪“Table1”中的更改的审计表“Audit_Table1”。但问题在于,存储过程在同一个SP中的3个不同阶段更新表。但触发器也发射了三次。那么我能做些什么,只触发一次触发器并捕获所有的变化。更新单个记录后审计表中的多个记录

回答

0

在您的存储过程中,您可以选择在不希望触发的时间段内禁用表格触发器。

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } 
ON { object_name | DATABASE | ALL SERVER } [ ; ] 

您可以在这里了解更多:

DISABLE TRIGGER (Transact-SQL)

它不会捕捉 “所有的变化”,我真的不明白。

如果您不想捕获某些部分,请使用上述内容。

+0

我无法禁用触发器。它应该始终启用,但只能在特定存储过程的范围内触发一次 – Megha

+0

@Megha触发器的定义是什么?如果是INSERT/UPDATE/DELETE等,它将被调用,无论该表上发生的每个INSERT/UPDATE/DELETE如何。 – Patrick

+0

这是一个更新后的触发器。我在其中一个触发器中引入了一个叫做context_info的accros。但不知道如何在这种情况下使用它或甚至有用。 – Megha