Перевірка @@TRANCOUNT у конструкції TRY...CATCH
Власник рахунку 10 виграв у лотереї та отримає $200. Ви готуєте простий скрипт, щоб додати ці $200 до current_balance рахунку 10. Ви впевнені, що все написали правильно, але все ж хочете перевірити свій код.
Насправді ви припустилися прикрої помилки під час додавання коштів: SET current_balance = 'current_balance' + 200. Ви записали 'current_balance' як рядок, що спричиняє помилку.
Створений вами скрипт має скасовувати всі зміни у разі помилки, перевіряючи, чи є відкрита транзакція. Якщо все відбувається правильно, транзакцію слід зафіксувати (commit), також перевіривши, чи є відкрита транзакція.
Ця вправа є частиною курсу
Транзакції та обробка помилок у SQL Server
Інструкції до вправи
- Розпочніть транзакцію.
- Виправте помилку в операції.
- Усередині блоку
TRYперевірте, чи є транзакція, і зафіксуйте її. - Усередині блоку
CATCHперевірте, чи є транзакція, і відкотіть її.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
BEGIN TRY
-- Begin the transaction
___ ___;
-- Correct the mistake
UPDATE accounts SET current_balance = 'current_balance' + 200
WHERE account_id = 10;
-- Check if there is a transaction
IF ___ > 0
-- Commit the transaction
___ ___;
SELECT * FROM accounts
WHERE account_id = 10;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Check if there is a transaction
IF ___ > 0
-- Rollback the transaction
___ ___;
END CATCH