【发布时间】:2016-10-05 18:54:11
【问题描述】:
我正在尝试在我的数据库中管理 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 触发器。我不能让这种情况发生。我怎样才能防止这种情况发生?
【问题讨论】:
-
这是 MyTable 上的插入触发器吗?
-
请提供触发器的完整定义
-
是 MyTable 是正在运行触发器的表。问题是插入触发器使用更新语句来设置 createdby 和 updatedby 字段。这是触发更新触发器。我需要避免这种情况发生。请查看我发布的答案,如果你们有更好的解决方案,请告诉我!
-
为什么需要用正在插入的值更新要插入的表?我还认为您不应该在插入中设置更新的列,这是插入而不是更新。为什么不使用默认的 getdate() 使这些列不为空。还是在插入表后立即创建一个代替触发器而不是更新表?
标签: sql sql-server sql-server-2008 triggers