Mantenha consistentes as alterações relacionadas
Uma transferência de saldo, por exemplo, exige que débito e crédito sejam concluídos juntos. Se apenas uma alteração for confirmada, o estado armazenado deixa de representar a operação pretendida.
Uma transação também pode proteger uma atualização em várias etapas que lê um valor e grava um resultado dependente. Se houver mudanças concorrentes, use o isolamento ou bloqueio adequado ao banco e à regra de negócio.
Evite trabalho externo ou longo dentro da transação
Não mantenha a transação aberta enquanto aguarda uma pessoa, serviço de rede ou cálculo demorado. Transações longas retêm recursos e complicam o trabalho concorrente.
E-mails, pagamentos e uploads externos geralmente não podem ser revertidos por um rollback do banco. Coordene esses efeitos com estados explícitos, uma outbox ou ação compensatória e teste a interrupção entre etapas.