Transactions imbriquées avec MySQL
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:
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 :oops:) 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 :)