Чтобы ответить на вопрос о триггерах и транзакциях: да, триггеры зачисляются в ту же явную или неявную транзакцию, что и код, выполняющий инструкцию, которая вызывает срабатывание триггера.
Кроме того, вТриггеры SQL Server по умолчанию запускаются в XACT_ABORT ON
, что означает, что если в триггере произойдет ошибка, транзакция WHOLE будет немедленно отменена.
Таким образом, ответ на ваш вопрос заключается в том, что еслиошибка происходит в любом из триггеров, вся транзакция откатывается.
Однако вы можете сделать SET XACT_ABORT OFF
в своем коде транзакции, и в этом случае откат повлияет только на то, что вы делаете в триггере. ,То есть UNLESS ваш код вызова запускает транзакцию, и вы явно делаете ROLLBACK
в своем триггере.
Вышесказанное объясняет, почему вы должны быть очень осторожны с использованием триггеров в первую очередь,