Definição
Transação é a unidade de operações de banco tratada com garantias transacionais. Ela delimita um começo, reúne operações relacionadas e termina com a confirmação ou o desfazimento conjunto de todas as alterações.
O cadastro de um pedido como unidade de trabalho
Gravados juntos, o pedido e seus itens formam uma unidade. Se todas as gravações terminam bem, a transação é confirmada e o conjunto permanece. Se uma etapa intermediária falha, nada permanece, e o banco volta ao estado anterior.
BEGIN;
INSERT INTO pedidos (id, cliente_id, total) VALUES (103, 7, 120.00);
INSERT INTO pedido_itens (pedido_id, produto_id, quantidade) VALUES (103, 4, 1);
COMMIT;O COMMIT torna as gravações visíveis para as demais operações e encerra a transação com sucesso. Até a confirmação, o conjunto permanece provisório e pode ser desfeito por completo.
Transação de banco não cobre efeitos externos
Uma transação de banco não inclui automaticamente efeitos externos. Um e-mail já enviado não é desfeito por um rollback, e uma chamada a outro serviço acontece fora do banco. Quando uma operação de negócio abrange vários sistemas, a coordenação precisa ser tratada pela aplicação, além das garantias transacionais do banco.
Falha comum e como verificar
A falha mais comum é confiar na transação para efeitos externos, como enviar um e-mail dentro do bloco e supor que o rollback desfaz o envio. O banco não controla o que acontece fora dele, e a mensagem já enviada permanece mesmo quando a transação é desfeita. Para verificar, separe o que o banco garante do que a aplicação precisa coordenar: force a falha de uma gravação e confira se o banco volta ao estado anterior, e depois confirme se o efeito externo foi tratado pela aplicação. Quando o e-mail sai sem o pedido confirmado, o fluxo precisa registrar a compensação fora da transação.
Veja a garantia que dá base à transaçãoDúvidas frequentes
Perguntas frequentes sobre Transação
- O que delimita uma transação?
- O início, as operações relacionadas e a confirmação ou o desfazimento no final.
- Transação inclui efeitos externos, como um e-mail enviado?
- Não. Uma transação de banco cobre o banco. Efeitos externos precisam de tratamento próprio.
- Por que agrupar operações em uma transação?
- Para que um conjunto de gravações seja concluído por completo ou desfeito por completo, sem resultado parcial.
Para continuar
Recursos relacionados
Documentação
PostgreSQL: transactions
Explica o uso de transações e suas garantias no PostgreSQL.
Abrir recursoDocumentação
SQLite: transaction
Documenta BEGIN, COMMIT e ROLLBACK e o comportamento transacional do SQLite.
Abrir recursoAplicação na formação
Formação DevOps
Na Formação DevOps, transações protegem lotes de gravação em rotinas que precisam terminar por completo ou não deixar rastro.
Conhecer a formaçãoFontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.