Cancelar alterações ainda não confirmadas
Rollback de transação é o cancelamento das alterações transacionais que ainda não foram confirmadas. Ele encerra a unidade sem manter suas gravações como resultado definitivo. Operações confirmadas antes dessa transação não são desfeitas por esse comando.
Imagine que uma rotina altera um cadastro e depois encontra uma condição que impede a conclusão. Se as mudanças continuam na mesma transação, o cancelamento permite descartá-las. O sistema não precisa publicar a alteração parcial para depois tentar corrigi-la.
O escopo é essencial para interpretar o resultado. Um rollback não restaura o banco inteiro a um horário anterior, nem apaga todo efeito produzido pelo programa. Ele atua sobre a unidade transacional correspondente.
Um exemplo com atualização
BEGIN;
UPDATE contatos SET nome = 'Nome de teste' WHERE id = 7;
ROLLBACK;Se o contato 7 existia, a atualização não deve permanecer confirmada ao final desse exemplo. A transação pode observar suas próprias alterações durante a execução. A leitura por outras sessões também depende do nível de isolamento configurado no banco.
Erro e rollback não são sinônimos universais
O efeito de um erro varia conforme o banco, a instrução e a biblioteca utilizada. Alguns mecanismos colocam a transação em estado de falha e exigem cancelamento antes de continuar. Outros podem cancelar apenas uma instrução em determinadas situações.
Por isso, o código precisa usar o tratamento recomendado pela ferramenta. Capturar uma exceção e seguir para a confirmação pode preservar um conjunto diferente do pretendido. Testar o caminho de erro faz parte da verificação da operação.
Cancelamento parcial com savepoint
Um savepoint marca um ponto dentro da transação. Bancos que oferecem esse recurso permitem descartar alterações posteriores à marca e manter o trabalho anterior ainda pendente. A confirmação final continua sendo necessária para a parte que será preservada.
Considere uma rotina que altera o telefone, cria um savepoint e tenta registrar uma preferência opcional. Se essa última etapa falhar, recuar até a marca pode descartar a preferência sem perder a alteração do telefone, ainda não confirmada. Esse uso só atende ao produto se a preferência puder falhar separadamente. Um vínculo obrigatório exigiria cancelar o conjunto.
O que não volta com o rollback
Emails enviados, arquivos gravados fora do mecanismo transacional e chamadas a outros serviços podem permanecer. No PostgreSQL, valores consumidos de sequências também podem deixar lacunas. O cancelamento das linhas não promete apagar logs ou todos os sinais da execução.
Para conferir, provoque uma falha controlada em desenvolvimento e examine tanto os registros quanto os efeitos externos. O verbete de transação explica como escolher o conjunto de operações coberto pela confirmação e pelo cancelamento.
Dúvidas frequentes
Perguntas frequentes sobre Rollback de transação
- Rollback desfaz um commit anterior?
- O comando cancela a transação atual ainda não confirmada. Uma alteração já confirmada exige outro mecanismo de correção ou recuperação.
- Todo erro cancela automaticamente toda a transação?
- O efeito depende do banco, da instrução e da biblioteca. A aplicação deve seguir o tratamento documentado e testar o caminho de falha.
- O que um savepoint permite?
- Ele marca um ponto dentro da transação para cancelar alterações posteriores, preservando o trabalho anterior ainda pendente. O suporte e o comportamento dependem do banco.
- Rollback remove todos os sinais da execução?
- Logs, efeitos externos e valores consumidos de sequências podem permanecer. A garantia se refere às alterações transacionais cobertas pelo cancelamento.
Para continuar
Recursos relacionados
Documentação
Sequências no PostgreSQL
Explica por que valores consumidos de sequências não são recuperados por um rollback.
Abrir recursoDocumentação
ROLLBACK no PostgreSQL
Documenta o cancelamento da transação atual.
Abrir recursoDocumentação
Transações no PostgreSQL
Explica confirmação, cancelamento e agrupamento de operações no banco.
Abrir recursoSite de referência
Desenvolvimento Colaborativo da Dev Side Studio
Conheça o acompanhamento técnico ao vivo para conferir o alcance do cancelamento e os efeitos externos de uma transação.
Abrir recursoAplicação na formação
Formação DevOps
O rollback cancela as alterações transacionais ainda não confirmadas dentro da unidade correspondente.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.