Bases des bases de données

Sur une table Compte, on démarre une transaction et l'on exécute un UPDATE qui retire 300 du solde du compte A et un UPDATE qui ajoute 300 au solde du compte B. On exécute ensuite ROLLBACK au lieu de COMMIT. Qu'advient-il de la table Compte ?

  1. ASeul l'ajout au compte B est annulé ; le retrait du compte A subsiste
  2. BLes 2 UPDATE sont annulés, et la table revient à son état d'avant le début de la transaction
  3. CComme les UPDATE ont déjà été exécutés, aucun n'est annulé
Afficher la réponse et l'explication

Réponse : B. Les 2 UPDATE sont annulés, et la table revient à son état d'avant le début de la transaction

Une transaction est un mécanisme qui traite une série d'opérations sur une base de données comme une seule unité. Les mises à jour effectuées dans une transaction deviennent définitives à l'exécution de COMMIT, et sont toutes annulées à l'exécution de ROLLBACK, les données revenant à leur état d'avant le début de la transaction. Dans cet exemple, le retrait du compte A et l'ajout au compte B sont tous deux annulés, et les 2 soldes restent inchangés. Si une erreur survient au milieu d'un virement, un ROLLBACK garantit qu'il ne reste pas d'état intermédiaire où un seul compte aurait été mis à jour. Pour n'annuler qu'une partie du travail, on peut marquer un point avec SAVEPOINT et y revenir avec ROLLBACK TO SAVEPOINT.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des bases de données

  1. Parmi les propriétés ACID qu'une transaction doit posséder, laquelle garantit qu'un virement qui débite le compte A et crédite le compte B est soit effectué entièrement, soit pas du tout, même si une panne survient en cours de route ?
  2. La quantité en stock d'un produit dans une table Stock vaut 10. La transaction T1 lit la quantité en stock et réécrit cette valeur moins 3, et T2 lit la quantité en stock et réécrit cette valeur moins 5. Si elles s'exécutent sans poser de verrou, dans l'ordre lecture de T1, lecture de T2, écriture de T1, écriture de T2, quelle est la quantité en stock finale ?
  3. Parmi les problèmes qui surviennent lorsque des transactions s'exécutent simultanément, quelle description d'une lecture sale (dirty read) est correcte ?
  4. La transaction T1 a exécuté SELECT COUNT(*) FROM Commande WHERE Montant >= 1000 et a obtenu 8. Juste après, T2 a inséré une ligne de commande d'un montant de 2000 et l'a validée. Lorsque T1 a exécuté de nouveau la même instruction SELECT, elle a obtenu 9. De quel phénomène s'agit-il ?
  5. Parmi les niveaux d'isolation définis par la norme SQL, quelle combinaison indique correctement les phénomènes qui peuvent se produire avec READ COMMITTED ?