Maison > base de données > tutoriel mysql > Que se passe-t-il lorsque nous utilisons COMMIT dans une procédure stockée MySQL et que l'une des transactions sous la transaction START échoue ?

Que se passe-t-il lorsque nous utilisons COMMIT dans une procédure stockée MySQL et que l'une des transactions sous la transaction START échoue ?

WBOY
Libérer: 2023-08-27 18:09:11
avant
874 Les gens l'ont consulté

当我们在 MySQL 存储过程中使用 COMMIT 并且 START 事务下的事务之一失败时,会发生什么情况?

Supposons que l'une des requêtes échoue ou génère une erreur et que l'autre requête s'exécute correctement, MySQL valide toujours les modifications pour la requête correctement exécutée. Cela peut être compris à partir de l'exemple suivant où nous utilisons la table "employee.tbl" avec les données suivantes -

Exemple

mysql> Select * from employee.tbl;
+----+---------+
| Id | Name    |
+----+---------+
| 1  | Mohan   |
| 2  | Gaurav  |
| 3  | Sohan   |
| 4  | Saurabh |
| 5  | Yash    |
+----+---------+
5 rows in set (0.00 sec)

mysql> Delimiter //

mysql> Create Procedure st_transaction_commit_save()
    -> BEGIN
    -> START TRANSACTION;
    -> INSERT INTO employee.tbl (name) values ('Rahul');
    -> UPDATE employee.tbl set name = 'Gurdas' WHERE id = 10;
    -> COMMIT;
    -> END //
Query OK, 0 rows affected (0.00 sec)
Copier après la connexion

Maintenant, lorsque nous appelons cette procédure, nous savons que la requête UPDATE produira une erreur comme nous le faisons. Je n'ai pas l'identifiant sur notre table =10. Mais puisque la première requête s'exécutera avec succès, COMMIT enregistrera les modifications apportées à la table.

mysql> Delimiter ;
mysql> Call st_transaction_commit_save()//
Query OK, 0 rows affected (0.07 sec)

mysql> Select * from employee.tbl;
+----+---------+
| Id | Name    |
+----+---------+
| 1  | Mohan   |
| 2  | Gaurav  |
| 3  | Sohan   |
| 4  | Saurabh |
| 5  | Yash    |
| 6  | Rahul   |
+----+---------+
6 rows in set (0.00 sec)
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal