Я знаю о настройке сервера «Разрешить триггеры для других», который позволяет действию, предпринимаемому триггером, запускать другой триггер (или нет), и, насколько я понимаю, мои единственные варианты: True (разрешить триггер запускать другие триггеры, что может привести к бесконечной рекурсии) или False (действия, предпринимаемые триггерами, не будут запускать какие-либо другие триггеры, что может привести к неожиданным результатам или непоследовательным данным)."Максимально допустимая глубина запуска" в SQL Server?
Есть ли способ обеспечить «максимальную глубину триггера» в SQL Server? Я использую 2008, если это имеет значение, хотя я не знаю об этой функции в любой версии (или в любой другой СУБД, если на то пошло, хотя мои знания, по общему признанию, ограничены). Например, вот что мне хотелось бы:
- Установите «Максимальная глубина запуска» на «2».
- я вставить строку в table1
- Триггер на TABLE1 вставок в table2
- Триггер на table2 вставок в Table3
- Там в триггер на Table3, что бы вставить в table4, но так как максимальная глубина 2 , либо триггер просто не запускается (менее идеален, но согласуется с текущим «Рекурсивным триггером = ложным» поведением на SQL Server), или весь набор вставок откатывается назад и терпит неудачу с ошибкой типа «Максимальная глубина триггера (2) превышено - вставить сбой "сообщение (идеальное)
Кто-нибудь t знаете, возможно ли это, или если есть выдающийся запрос функции для этого поведения? Если я сумасшедший, и это ужасная идея поведения, я открыт для этого, но я хотел бы знать, почему (непреднамеренные последствия и т. Д.).
exec sp_CONFIGURE 'nested_triggers' может принимать значения только 0 или 1. –
@Lukasz Lysik: Вы правы, пост отредактировал – Andomar
Это сообщение в блоге именно то, что я искал - спасибо. Не могу поверить, что я не знал об этой функции – SqlRyan