ComeçarComece de graça

Fazendo rollback de uma transação se houver erro

No seu primeiro dia de trabalho, você recebeu a tarefa de configurar transações que registrem quando o dinheiro é transferido no seu banco.

Você quer preparar um script simples em que $100 saem de account_id = 1 e vão para account_id = 5. Depois disso, o script registra esses movimentos na tabela transactions. Você acha que escreveu tudo corretamente, mas, como alguém cauteloso, prefere conferir tudo!

Na verdade, você cometeu um erro. Em vez de inserir uma nova transação para a conta 5, você fez isso para a conta 500, que não existe.

Para evitar erros no futuro, o script que você criar deve fazer rollback de todas as alterações se ocorrer um erro. Se tudo correr bem, a transação deve ser confirmada (committed).

Este exercício faz parte do curso

Transações e tratamento de erros no SQL Server

Ver curso

Instruções do exercício

  • Inicie a transação.
  • Corrija o erro na operação.
  • Faça o commit da transação se não houver erros.
  • No bloco CATCH, faça o rollback da transação.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

BEGIN TRY  
	-- Begin the transaction
	BEGIN ___;
		UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
		INSERT INTO transactions VALUES (1, -100, GETDATE());
        
		UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
        -- Correct it
		INSERT INTO transactions VALUES (500, 100, GETDATE());
    -- Commit the transaction
	___ TRAN;    
END TRY
BEGIN CATCH  
	SELECT 'Rolling back the transaction';
    -- Rollback the transaction
	___ ___;
END CATCH
Editar e executar o código