Retour à la leçonMission
Mission : un virement bancaire qui doit réussir ou échouer ensemble
Garantir l'atomicité d'un virement entre deux comptes et gérer correctement une erreur métier survenant au milieu de la transaction.
Contexte
Le code de virement fait compte_source.solde -= 100 puis compte_dest.solde += 100, avant de lever une ValueError si le solde source devient négatif, le tout avant tout commit(). Un développeur doute de la portée exacte de session.rollback() dans ce scénario, et une équipe d'import de données veut aussi isoler un échec ponctuel sans perdre le reste du lot déjà traité.