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
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