Я пытаюсь поставить инструкцию 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
Есть ли способ обойти это?