Я читал об обработке ошибок в SQL Server в этой статье, и они предлагают использовать GOTO SQL Server в определенных ситуациях для отката транзакции. Пример:
BEGIN TRAN
UPDATE Authors
SET Phone = '415 354-9866'
WHERE au_id = '724-80-9391'
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
UPDATE Publishers
SET city = 'Calcutta', country = 'India'
WHERE pub_id = '9999'
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
COMMIT TRAN
PROBLEM:
IF (@intErrorCode <> 0) BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
END
Эта статья была написана почти 10 лет назад, и я слышал, что обычно использовать GOTO — плохая идея. Является ли приведенный выше метод обработки ошибок приемлемым для обработки ошибок в SQL Server? Если нет, может ли кто-нибудь предложить лучшую альтернативу?