Sql server &引用;最大允许触发深度“;在SQL Server中?

Sql server &引用;最大允许触发深度“;在SQL Server中?,sql-server,triggers,data-consistency,Sql Server,Triggers,Data Consistency,我知道“允许触发器触发其他触发器”服务器设置允许触发器执行的操作触发另一个触发器(或不触发),据我所知,我唯一的选项是True(允许触发器触发其他触发器,这可能导致无休止的递归)或False(触发器采取的操作不会触发任何其他触发器,这可能导致意外结果或数据不一致) 有没有办法在SQL Server中强制执行“最大触发深度”?如果有必要的话,我正在使用2008,尽管我不知道任何版本(或者任何其他RDBMS中,尽管我的知识有限)上的功能。例如,我想: 将“最大触发深度”设置为“2” 我在表1中插入一

我知道“允许触发器触发其他触发器”服务器设置允许触发器执行的操作触发另一个触发器(或不触发),据我所知,我唯一的选项是True(允许触发器触发其他触发器,这可能导致无休止的递归)或False(触发器采取的操作不会触发任何其他触发器,这可能导致意外结果或数据不一致)

有没有办法在SQL Server中强制执行“最大触发深度”?如果有必要的话,我正在使用2008,尽管我不知道任何版本(或者任何其他RDBMS中,尽管我的知识有限)上的功能。例如,我想:

  • 将“最大触发深度”设置为“2”
  • 我在表1中插入一行
  • 表1上的触发器插入表2中
  • 表2上的触发器插入表3
  • 表3上有一个触发器可以插入到表4中,但由于最大深度为2,要么触发器无法运行(不太理想,但与SQL Server上当前的“Recursive triggers=False”行为一致),要么整个插入集被回滚并失败,出现类似“maximum trigger depth(2)”的错误超出-插入失败”消息(理想)

  • 是否有人知道这是否可能,或者是否有针对此行为的突出功能请求?如果我疯了,并且这是一个关于行为的糟糕想法,我对此持开放态度,但我想知道原因(意外后果等)。

    在触发器内,您可以检查嵌套级别,并可以选择返回:

    IF (TRIGGER_NESTLEVEL() > 2)
        RETURN
    

    有关更多详细信息,请参见此处。

    在触发器中,您可以检查嵌套级别,还可以选择返回:

    IF (TRIGGER_NESTLEVEL() > 2)
        RETURN
    

    有关详细信息,请参阅此部分。

    exec sp_CONFIGURE“nested_triggers”只能接受值0或1。这篇博文正是我想要的-谢谢。我不敢相信我不知道这一功能exec sp_CONFIGURE“nested_triggers”只能接受值0或1。那篇博文正是我想要的-谢谢。我真不敢相信我这么做了我不知道这个功能