У меня есть хранимая процедура с инструкциями BEGIN TRANSACTION
и COMMIT TRANSACTION
. Внутри транзакции есть запрос выбора WITH (XLOCK, ROWLOCK)
.
Транзакция потенциально может потерпеть неудачу из-за некоторых вычислений, которые вызывают ошибку арифметического переполнения, если предоставлены значения, выходящие за границы. Эта ошибка может произойти перед любыми операторами вставки / обновления.
У меня вопрос: следует ли заключить транзакцию в TRY / CATCH и откат или это действительно не требуется, и все блокировки будут автоматически сняты, если транзакция завершится неудачно? Меня беспокоит только то, что SQL не снимет все блокировки транзакции в случае сбоя транзакции.
Спасибо,
Том