Retour au cours

Transactions et Propriétés ACID

Principes Fondamentaux des Bases de Données : De Zéro à Héros

Leçon 39 : Transactions et Propriétés ACID

Une Transaction est une séquence d'une ou plusieurs opérations SQL qui sont exécutées comme une seule unité de travail logique. Les transactions sont essentielles pour maintenir l'intégrité des données, en particulier dans les environnements concurrents (plusieurs utilisateurs accédant aux données simultanément).

Les Propriétés ACID

Tout SGBD fiable garantit l'intégrité de ses données en adhérant aux propriétés ACID :

1. Atomicité (Atomicity)

  • Concept : La transaction doit être traitée comme une seule unité indivisible. Soit toutes les opérations sont terminées avec succès, soit aucune d'elles ne l'est.
  • Analogie : Transfert d'argent du Compte A vers le Compte B. Si la déduction de A réussit mais que l'ajout à B échoue, la transaction entière est annulée (rolled back).

2. Cohérence (Consistency)

  • Concept : Une transaction doit amener la base de données d'un état valide à un autre. Elle garantit que les données écrites dans la base de données doivent respecter toutes les règles et contraintes définies (PK, FK, NOT NULL).

3. Isolation (Isolation)

  • Concept : Les transactions concurrentes doivent être isolées les unes des autres. Le résultat des transactions simultanées doit être le même que si elles étaient exécutées séquentiellement.

4. Durabilité (Durability)

  • Concept : Une fois qu'une transaction est validée (terminée avec succès), ses modifications sont permanentes, même en cas de défaillance du système (panne de courant, crash).

Contrôle de Transaction de Base

sql -- Démarrer un bloc de transaction BEGIN TRANSACTION;

-- Opération 1 UPDATE Accounts SET Balance = Balance - 100 WHERE AccountID = 1;

-- Opération 2 UPDATE Accounts SET Balance = Balance + 100 WHERE AccountID = 2;

-- Si tout est correct, rendre les modifications permanentes COMMIT;

-- Si une erreur se produit, annuler toutes les modifications depuis BEGIN -- ROLLBACK;