Confirmar o conjunto ou cancelar suas alterações
Atomicidade é a propriedade transacional que permite tratar um conjunto de alterações como uma unidade. Dentro do escopo coberto pela transação, a confirmação mantém o conjunto, e o cancelamento desfaz suas alterações transacionais. O bloco não deve terminar com apenas uma parte desse conjunto confirmada.
Imagine uma rotina que cria uma turma e exige registrar sua primeira matrícula no mesmo procedimento. Se a matrícula for recusada, manter a turma criada por essa tentativa deixaria o cadastro incompleto. Agrupar as duas gravações permite cancelar a criação da turma junto com a tentativa de matrícula.
A garantia depende de as etapas participarem da mesma transação e de o código tratar o caminho de falha corretamente. Gravações realizadas por conexões separadas ou já confirmadas não entram automaticamente nesse mesmo grupo.
Um exemplo de cancelamento
BEGIN;
INSERT INTO turmas (id, nome) VALUES (10, 'Turma de teste');
INSERT INTO matriculas (pessoa_id, turma_id) VALUES (7, 10);
ROLLBACK;O exemplo pressupõe tabelas compatíveis, o estudante 7 existente e o identificador 10 disponível para a turma. Ele executa ROLLBACK para mostrar o efeito do cancelamento. Ao final, a turma e a matrícula criadas dentro desse bloco não devem permanecer como alterações confirmadas.
Atomicidade não significa simultaneidade física
Os comandos podem executar em sequência e consumir tempo. A propriedade descreve a confirmação ou o cancelamento da unidade, não a execução de todas as instruções no mesmo instante. O banco utiliza mecanismos internos para oferecer essa garantia.
A visibilidade entre transações também envolve isolamento. Duas consultas feitas dentro da mesma transação podem ou não enxergar uma alteração confirmada por outra entre elas, dependendo do nível de isolamento. Agrupar as gravações para confirmação conjunta não define, sozinho, o que cada consulta consegue ler.
O limite da unidade transacional
Um email enviado e uma chamada a uma API externa não são desfeitos pelo rollback do banco. Se a rotina executa esses efeitos antes da confirmação, eles podem permanecer mesmo após o cancelamento das gravações. A aplicação precisa coordenar esse trabalho adicional.
Nem todo efeito interno volta ao valor anterior. No PostgreSQL, valores consumidos de sequências podem deixar lacunas após uma transação cancelada. Isso não significa que uma linha parcialmente confirmada tenha permanecido.
Como conferir a garantia
Em desenvolvimento, provoque uma falha após uma gravação inicial e consulte o resultado depois de encerrar a transação. Confira todas as tabelas envolvidas, a conexão utilizada e a ausência de confirmações intermediárias. Compare os registros, sem exigir que contadores técnicos nunca avancem.
O verbete de transação explica como delimitar a unidade e separar suas garantias dos efeitos externos.
Dúvidas frequentes
Perguntas frequentes sobre Atomicidade
- Todas as gravações precisam acontecer no mesmo instante?
- Os comandos podem executar em sequência. A propriedade trata o resultado transacional como uma unidade para confirmação ou cancelamento.
- Atomicidade desfaz um email já enviado?
- Uma transação local do banco não controla automaticamente efeitos externos. Emails e chamadas a outros serviços exigem coordenação própria.
- Uma lacuna na sequência comprova falha de atomicidade?
- No PostgreSQL, valores consumidos de sequências podem não ser reutilizados após cancelamento. Isso é diferente de uma linha parcialmente confirmada.
- Basta colocar parte das gravações em uma transação?
- As alterações que precisam ser confirmadas juntas devem participar do escopo correto. Confirmações intermediárias ou conexões independentes podem separar esse conjunto.
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
Transações no PostgreSQL
Explica confirmação, cancelamento e agrupamento de operações no banco.
Abrir recursoDocumentação
ROLLBACK no PostgreSQL
Documenta o cancelamento da transação atual.
Abrir recursoSite de referência
Desenvolvimento Colaborativo da Dev Side Studio
Conheça o acompanhamento técnico ao vivo para revisar o agrupamento das gravações e os caminhos de falha de uma transação.
Abrir recursoAplicação na formação
Formação DevOps
A atomicidade delimita quais gravações precisam ser confirmadas ou canceladas juntas no banco.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.