【问题标题】:SQL Server Triggers Firing Each other QuestionSQL Server 触发器相互触发问题
【发布时间】:2010-09-21 17:28:58
【问题描述】:

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

【问题讨论】:

    标签: sql triggers


    【解决方案1】:

    我猜你有两个选择:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        exec sp_configure '嵌套触发器', 0

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-12-24
            • 1970-01-01
            • 1970-01-01
            • 2011-08-06
            • 1970-01-01
            • 2011-09-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多