НачатьНачать бесплатно

Проверка @@TRANCOUNT в конструкции TRY...CATCH

Владелец счёта 10 выиграл в лотерею и получит $200. Вы готовите простой скрипт, чтобы добавить эти $200 к current_balance счёта 10. Кажется, всё написано верно, но вы решаете проверить код ещё раз.

Выясняется, что при начислении денег была допущена ошибка: SET current_balance = 'current_balance' + 200. Вы указали 'current_balance' как строку, что вызывает ошибку.

Скрипт должен откатывать все изменения при возникновении ошибки — с проверкой наличия открытой транзакции. Если всё проходит успешно, транзакцию следует зафиксировать, также предварительно проверив наличие открытой транзакции.

Это упражнение является частью курса

Транзакции и обработка ошибок в 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
Редактировать и запускать код