Bonjour,
J'ai écrit une procédure stockée dans laquelle mes requêtes sont encadrées par un "START TRANSACTION" et "COMMIT"/"ROLLBACK".
J'aimerais appeler plusieurs fois cette procédure en l'encadrant elle aussi par un "START TRANSACTION" et "COMMIT"/"ROLLBACK" de telle manière à ce que, si une erreur se produit dans la transaction parente, aucune modification n'est faite sur la base, malgré le "COMMIT" dans la procédure stockée.
Exemple :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 DELIMITER // -- la procédure stockée CREATE PROCEDURE maProcedure(des paramètres...) BEGIN START TRANSACTION; -- requêtes... COMMIT; END// START TRANSACTION; CALL maProcedure(...); CALL maProcedure(...); -- imaginons que cet appel lève une erreur : aucune modification ne devrait être enregistrée en base malgré le COMMIT présent dans maProcedure() CALL maProcedure(...); COMMIT;
Selon la documentation officielle, il n'est pas possible de faire des transactions imbriquées avec MySQL. Cependant, j'ai vu sur un forum (dont je ne me souviens plus de l'adresse) qu'il était possible d'utiliser un framework pour contourner cette restriction. Avez-vous des informations là-dessus ? Sinon, avez-vous une autre solution ?
Merci![]()
Partager