Я пытаюсь поместить оператор try-catch в триггер, используя Microsoft Server 2005.
BEGIN TRANSACTION
BEGIN TRY
--Some More SQL
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF (XACT_STATE()) = -1
BEGIN
ROLLBACK TRANSACTION;
END;
END CATCH
Проблема в том, что я не хочу, чтобы триггер давал сбой, если что-то было перехвачено блоком try-catch. На данный момент я получаю сообщение об ошибке «Транзакция завершилась в триггере. Пакет был прерван». если транзакция не удалась. Как я могу заставить триггер срабатывать изящно?
Кроме того, если я удаляю транзакцию, я получаю сообщение об ошибке «Транзакция обречена на триггер. Пакет был прерван».
BEGIN TRY
--Some More SQL
END TRY
BEGIN CATCH
return
END CATCH
Есть ли способ обойти это?