Bonjour à tous,
j'ai besoin d'utiliser les transactions.
Je ne parle pas de la BD que j'utilise car ma préoccupation est plus de savoir comment procéder pour bien traiter une transaction.
Comme mysql est fortement utilisé, je l'utiliserai dans mon exemple.
La base SQL :
Solution 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BEGIN les requêtes SQL (ajout, modif, suppression, ...) COMMIT (si tout est ok) ou ROLLBACK (en cas de souci)
Solution 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php $resultat = mysql_query("BEGIN;DELETE FROM utilisateurs WHERE id=10;INSERT INTO utilisateursPro VALUES (10,'Durand','Jean-Michel');COMMIT"); if($resultat !== FALSE) echo "Jean-Michel Durand est passé pro"; else echo "Echec de la transaction"; ?>
La solution 1 est apparemment déconseillée, quant à la solution 2, pour moi, elle n'a pas de sens, étant donné que les requêtes sont bien envoyés les unes à la suite des autres mais elles sont indépendantes (envoyés dans des mysql_query différent).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $resultat = mysql_query("BEGIN;"); if($resultat !== FALSE) { echo "Jean-Michel Durand est passé pro"; $resultat = mysql_query("DELETE FROM utilisateurs WHERE id=10;INSERT INTO utilisateursPro VALUES (10,'Durand','Jean-Michel'); if($resultat !== FALSE) $resultat = mysql_query("COMMIT;"); else echo "Echec de la transaction"; } else echo "Echec de la transaction";
Mais dans ce cas, comment procéder pour bien traiter une transaction ?
Merci d'avance pour vos aides/suggestions.
Partager