Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server会触发相互问问题_Sql_Triggers - Fatal编程技术网

SQL Server会触发相互问问题

SQL Server会触发相互问问题,sql,triggers,Sql,Triggers,我有一个审计触发器,它自动在我所有表的字段中放置更新的时间和更新的用户。我有另一组触发器,它们将更新中的事件信息写入事件表。问题是,当某人更新某个内容时,由于第一个触发器,事件信息会被触发两次。如何抑制重复条目?我想您有两种选择: 或者将两组触发器组合成一组 或者,每个数据库都有一个设置,允许禁用触发器的递归触发 查看触发器级别函数。它返回触发器嵌套的当前级别。您可以检查它以防止重复。如果您有足够的权限(某些Web主机不允许您这样做),您还可以同时关闭嵌套触发器。有一个名为sp_configur

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

我想您有两种选择:

  • 或者将两组触发器组合成一组

  • 或者,每个数据库都有一个设置,允许禁用触发器的递归触发


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

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


    exec sp_configure'nested triggers',0

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