Transactions

2 min Niveau 7

Introduction

Une transaction est un groupe séquentiel d'opérations de manipulation de la base de données, qui est exécuté comme s'il s'agissait d'une seule unité de travail. En d'autres termes, une transaction ne sera jamais terminée si chaque opération individuelle du groupe n'est pas réussie. Si une opération de la transaction échoue, la transaction entière échoue.

En pratique, vous regroupez plusieurs requêtes SQL dans un groupe et vous les exécutez toutes ensemble dans le cadre d'une transaction.

Properties of Transactions

Les transactions possèdent les quatre propriétés standard suivantes, généralement désignées par l'acronyme ACID.

  • Atomicity − Cela garantit que toutes les opérations de l'unité de travail se terminent avec succès ; sinon, la transaction est interrompue au point d'échec et les opérations précédentes sont ramenées à leur état antérieur.
  • Consistency − Cela garantit que la base de données change correctement d'état lors d'une transaction validée avec succès.
  • Isolation − Cela permet aux transactions de fonctionner indépendamment les unes des autres et de manière transparente.
  • Durability - Elle garantit que le résultat ou l'effet d'une transaction engagée persiste en cas de défaillance du système.

Dans MySQL, les transactions commencent par l'instruction BEGIN WORK et se terminent par une instruction COMMIT ou ROLLBACK. Les commandes SQL entre les instructions de début et de fin constituent l'essentiel de la transaction.

COMMIT and ROLLBACK

Ces deux mots-clés Commit et Rollback sont principalement utilisés pour les transactions MySQL.

  • Lorsqu'une transaction réussie est terminée, la commande COMMIT doit être émise afin que les modifications apportées à toutes les tables concernées soient prises en compte.
  • En cas d'échec, une commande ROLLBACK doit être émise pour que chaque table référencée dans la transaction revienne à son état précédent.

Vous pouvez contrôler le comportement d'une transaction en définissant une variable de session appelée AUTOCOMMIT. Si AUTOCOMMIT a la valeur 1 (valeur par défaut), chaque instruction SQL (dans une transaction ou non) est considérée comme une transaction complète et est validée par défaut lorsqu'elle se termine.

Lorsque AUTOCOMMIT est réglé sur 0, en émettant la commande SET AUTOCOMMIT = 0, la série d'instructions suivante agit comme une transaction et aucune activité n'est engagée jusqu'à ce qu'une instruction COMMIT explicite soit émise.

Vous pouvez exécuter ces commandes SQL en PHP en utilisant la fonction mysql_query().

logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus