2016-10-05 118 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