После того, как триггеры автоматически становятся частью атомарной инструкции DML вставки / обновления / удаления в таблице.
Вы просто запускаете ROLLBACK TRAN в триггере, чтобы откатить всю работу в триггере и исходный оператор I / U / D. Внешний транш также откатывается, если он есть.
Важно
Откат в триггере для SQL 2000 и более ранних версий прерывает пакет. После запуска I / U / D не будет кода. См. Прекрасную статью Эрланда и другую
Для SQL 2005 с TRY / CATCH выполнение перейдет к блоку CATCH, и ваш пакет (он же сохраненный процесс и т. Д.) Будет нормально завершен.
См. Откаты и коммиты в хранимых процедурах и триггерах . Триггер и значение TRY / CATCH * здесь