ПочатиПочніть безкоштовно

Перевірка @@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
Редагувати та запускати код