3

我有一个审计触发器,它会自动放置更新时间以及在我所有表中的字段中更新的用户。我有另一组触发器,它们将事件信息从更新写入事件表。问题是当有人更新某些东西时,由于第一次触发,事件信息会被触发两次。如何抑制重复条目?

4

4 回答 4

1

我猜你有两个选择:

  1. 要么将两组触发器合并为一个。

  2. 或者,每个数据库设置允许禁用触发器的递归触发。

于 2008-11-10T23:33:33.537 回答
1

查看 TRIGGER_NESTLEVEL 函数。它返回触发器嵌套的当前级别。您可以检查以防止重复。

于 2008-11-10T23:47:19.483 回答
1

如果您有足够的权限,您也可以一起关闭嵌套触发器(某些虚拟主机不允许您这样做)。有一个名为 sp_configure 的存储过程 (Sql 2005) 允许您修改服务器的配置。下面的语句禁用嵌套触发器,这将阻止触发器触发另一个触发器。

exec sp_configure '嵌套触发器', 0

于 2008-11-11T02:12:33.807 回答
0

也可以在 SS2005 中禁用 trigger-fires-trigger 行为,方法是进入 SS Mgt Studio 并选择相关服务器的图标,右键单击,然后选择“Properties”。然后从左侧列表中选择“高级”,并将“允许触发器触发其他”的值设置为“假”。

于 2009-09-17T19:35:44.603 回答