2017-08-31 118 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