Nous savons que dans une transaction, les instructions sont exécutées comme une unité. Si une opération au sein de la transaction échoue, la transaction entière échoue et doit être annulée. Dans le cas contraire, toutes les modifications apportées par l'instruction sont enregistrées dans la base de données. Afin d'implémenter les transactions, MySQL fournit l'instruction suivante -
Comme son nom l'indique, la transaction commence à partir de cette instruction. Fondamentalement, il informe MySQL que les instructions suivantes doivent être traitées comme une seule unité de travail jusqu'à la fin de la transaction.
L'instruction COMMIT valide les modifications apportées à la base de données. En d’autres termes, lorsqu’une transaction se termine avec succès, une commande COMMIT doit être émise pour rendre effectives les modifications apportées à toutes les tables impliquées.
La commande ROLLBACK annule toutes les modifications apportées par l'instruction et ramène la base de données à son état précédent, qui était l'état au début de la transaction.
Ce qui suit est un exemple montrant l'implémentation d'une transaction MySQL -
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.06 sec)
Dans cet exemple, la transaction est démarrée par l'instruction START TRANSACTION. Exécutez ensuite deux instructions INSERT, suivies d'une instruction COMMIT. L'instruction COMMIT enregistre les modifications apportées à la base de données, qui peuvent être observées à partir de l'ensemble de résultats suivant, qui montre que les valeurs ont été insérées dans la table -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec) mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','History',40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Harshit','History',48); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.04 sec)
Dans cet exemple, la transaction est démarrée par l'instruction START TRANSACTION . Exécutez ensuite deux instructions INSERT, suivies d'une instruction ROLLBACK. L'instruction ROLLBACK annulera les modifications apportées à la base de données, ce qui peut être observé à partir du jeu de résultats suivant qui montre qu'aucune nouvelle valeur n'a été insérée dans la table -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 1 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!