2016-10-05 165 views
0

我想創建一個INSERT觸發器和UPDATE觸發器在我的數據庫中管理CreatedBy和UpdatedBy字段的所有表上。創建INSERT觸發器更新CreatedBy和UpdatedBy而不觸發相同表上的更新觸發器

是我遇到的問題是,下面是我的INSERT觸發器:

UPDATE MyTable 
SET CreatedBy = INSERTED.CreatedBy, 
    InsertDate = GetDate(), 
    UpdatedBy = INSERTED.UpdatedBy, 
    UpdateDate = GetDate() 
FROM INSERTED 
WHERE MyTable.Id = INSERTED.Id 

的問題是,這個UPDATE語句還觸發UPDATE觸發器。我不能有這樣的事情發生。我怎樣才能防止這一點?

+0

這是MyTable的INSERT觸發器? –

+1

請提供完整的觸發定義 – techspider

+0

是MyTable是觸發器正在運行的表。問題在於插入觸發器使用更新語句來設置createdby和updatedby字段。這是觸發更新觸發器。我需要避免這種情況發生。請看我發佈的答案,並讓我知道如果你們有更好的解決方案! –

回答

0

我發現了一個名爲IF TRIGGER_NESTLEVEL()的SQL函數。

我能包住具有以下,以防止觸發更新運行時插入觸發器運行更新觸發器:

IF TRIGGER_NESTLEVEL() < 2 
    --Trigger script here 
END