【发布时间】:2009-10-26 16:27:36
【问题描述】:
我知道“允许触发器触发其他人”服务器设置,它允许触发器执行的操作触发另一个触发器(或不触发),据我所知,我唯一的选项是 True(允许触发器触发其他触发器, 这可能导致无休止的递归)或 False(触发器采取的操作不会触发任何其他触发器,这可能会导致意外结果或不一致的数据)。
有没有办法在 SQL Server 中强制执行“最大触发深度”?如果重要的话,我正在使用 2008,尽管我不知道任何版本(或任何其他 RDBMS 中的功能,尽管我的知识是有限的)。例如,这就是我想要的:
- 将“最大触发深度”设置为“2”。
- 我在 table1 中插入一行
- table1 上的触发器插入到 table2 中
- table2 上的触发器插入到 table3 中
- table3 上有一个触发器会插入到 table4 中,但由于最大深度为 2,因此触发器不会运行(不太理想,但与 SQL Server 上当前的“递归触发器 = False”行为一致) ,或者整个插入集被回滚并失败,并出现类似“最大触发深度 (2) 超出 - 插入失败”消息(理想)的错误消息(理想)
是否有人知道这是否可能,或者是否有针对此行为的出色功能请求?如果我疯了并且这是一个糟糕的行为想法,我对此持开放态度,但我想知道原因(意外后果等)。
【问题讨论】:
标签: sql-server triggers data-consistency