创建一个更新CreatedBy和UpdatedBy的INSERT TRIGGER,而不在同一个表上触发UPDATE TRIGGER

时间:2016-10-05 18:54:11

标签: sql sql-server sql-server-2008 triggers

我正在尝试在我的数据库中管理CreatedBy和UpdatedBy字段的所有表上创建INSERT TRIGGER和UPDATE TRIGGER。

我遇到的问题是以下是我的INSERT触发器:

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

问题是此UPDATE语句还会触发UPDATE触发器。我不可能发生这种情况。我该如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

我找到了一个名为IF TRIGGER_NESTLEVEL()的内置SQL函数。

我能够使用以下内容包装更新触发器,以防止在插入触发器运行时更​​新触发器运行:

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