Commit e Rollback
Visão Geral
Os comandos COMMIT e ROLLBACK são fundamentais para o controle transacional em bancos de dados. Eles determinam o destino final das operações realizadas dentro de uma transação.
Comando COMMIT
O comando COMMIT finaliza a transação atual e torna permanentes todas as alterações realizadas desde o início da transação.
Sintaxe
Efeitos do COMMIT
Persistência: Todas as alterações se tornam permanentes no banco de dados
Visibilidade: As alterações se tornam visíveis para outras transações
Liberação de Bloqueios: Todos os bloqueios adquiridos pela transação são liberados
Pontos de Salvamento: Todos os savepoints criados na transação são descartados
Finalização: A transação é encerrada e uma nova transação é iniciada automaticamente em alguns SGBDs
Exemplos de COMMIT
Exemplo Básico
Commit Condicional
Comando ROLLBACK
O comando ROLLBACK desfaz todas as alterações realizadas desde o início da transação ou desde um ponto de salvamento específico.
Sintaxe
Efeitos do ROLLBACK
Reversão: Todas as alterações são desfeitas
Liberação de Bloqueios: Todos os bloqueios adquiridos pela transação são liberados
Pontos de Salvamento: Todos os savepoints são descartados (exceto em rollback parcial)
Finalização: A transação é encerrada e uma nova transação é iniciada automaticamente em alguns SGBDs
Exemplos de ROLLBACK
Rollback Completo
Rollback com Tratamento de Erros
Commit vs. Rollback: Quando Usar
Use COMMIT quando:
Operações Bem-Sucedidas: Todas as operações foram concluídas com sucesso
Dados Válidos: Os dados estão em um estado consistente
Ponto de Finalização: Você atingiu um ponto lógico de conclusão no processamento
Use ROLLBACK quando:
Erros Detectados: Ocorreram erros durante o processamento
Dados Inválidos: Os dados não atendem às regras de negócio ou restrições
Operação Cancelada: O usuário ou o sistema decidiu cancelar a operação
Teste ou Simulação: Você está apenas testando ou simulando operações
Auto-Commit
Muitos SGBDs e ferramentas de cliente possuem um modo "auto-commit" que automaticamente confirma cada instrução SQL individual como uma transação separada.
Habilitando/Desabilitando Auto-Commit
Implicações do Auto-Commit
Vantagens: Simplicidade, menor risco de deixar transações abertas
Desvantagens: Perda de atomicidade para operações múltiplas, potencial redução de desempenho
Commit Implícito
Algumas operações podem causar um commit implícito, mesmo dentro de uma transação explícita:
Comandos DDL: CREATE, ALTER, DROP, etc.
Comandos DCL: GRANT, REVOKE, etc.
Comandos de Administração: ANALYZE, VACUUM, etc.
Conexão/Desconexão: Dependendo do SGBD e configuração
Práticas Recomendadas
1. Transações Curtas e Focadas
2. Tratamento Adequado de Erros
3. Evite Transações de Longa Duração
Conclusão
Os comandos COMMIT e ROLLBACK são ferramentas essenciais para garantir a integridade dos dados em sistemas de banco de dados. Eles permitem que os desenvolvedores controlem precisamente quando as alterações devem ser aplicadas permanentemente ou descartadas.
O uso adequado desses comandos, combinado com uma estratégia bem planejada de transações, é fundamental para desenvolver aplicações robustas que mantenham a consistência dos dados mesmo em cenários de falha ou concorrência.