O comando ROLLBACK pertence ao grupo TCL (Transaction Control Language) e tem como objetivo desfazer alterações realizadas durante uma transação.
Ele permite retornar o banco de dados ao estado anterior antes da confirmação definitiva através do COMMIT.
ROLLBACK;
START TRANSACTION;
INSERT INTO clientes
(nome, cidade)
VALUES
('João', 'Curitiba');
ROLLBACK;
O cliente inserido será removido porque a alteração foi cancelada.
START TRANSACTION;
UPDATE funcionarios
SET salario = 9000
WHERE id = 5;
ROLLBACK;
O salário voltará ao valor anterior.
START TRANSACTION;
DELETE FROM produtos
WHERE id = 20;
ROLLBACK;
O produto não será excluído definitivamente.
| ROLLBACK | COMMIT |
|---|---|
| Desfaz alterações | Confirma alterações |
| Retorna ao estado anterior | Torna dados permanentes |
| Usado em caso de erro | Usado após sucesso |
Alguns erros no banco de dados podem causar um rollback automático da transação.
START TRANSACTION;
INSERT INTO clientes
VALUES
(1,'Ana');
-- Erro de chave duplicada
ROLLBACK;
É possível voltar até um ponto específico utilizando SAVEPOINT.
START TRANSACTION;
UPDATE clientes
SET cidade='São Paulo'
WHERE id=1;
SAVEPOINT etapa1;
DELETE FROM pedidos;
ROLLBACK TO etapa1;
COMMIT;
Apenas a exclusão será desfeita.
| Benefício | Descrição |
|---|---|
| Segurança | Evita alterações incorretas |
| Controle | Permite cancelar operações |
| Integridade | Mantém dados consistentes |
| Recuperação | Corrige erros durante processos |
| Sistema | Exemplo |
|---|---|
| Bancos | Cancelar transferência com erro |
| E-commerce | Cancelar pedido incompleto |
| ERP | Desfazer atualização incorreta |
| Estoque | Corrigir movimentação |
| Erro | Problema |
|---|---|
| Executar COMMIT antes de validar | ROLLBACK não funciona depois |
| Não usar transações | Alterações não podem ser revertidas |
| Transações muito grandes | Maior consumo de recursos |
| Ignorar erros | Dados inconsistentes |