Partie II
Programmation procédurale
230
© Éditions Eyrolles
Le tableau suivant décrit une transaction MySQL découpée en trois parties. Le programmeur
aura le choix entre les instructions ROLLBACK TO SAVEPOINT indiquées en commentaire
pour valider tout ou partie de la transaction. Il faudra finalement se décider entre COMMIT et
ROLLBACK.
L’instruction SAVEPOINT déclare un point de validation.
Transactions imbriquées
Il n’est pas possible d’imbriquer plusieurs transactions se déroulant dans différents blocs.
Il n’est pas possible d’invalider par ROLLBACK une commande SQL du LDD ou du LCD rencontrée (CREATE, ALTER, DROP…).
Tableau 6-24 Transaction découpée
Code MYSQL
Commentaires
BEGIN
SET AUTOCOMMIT = 0;
INSERT INTO Compagnie VALUES
('C2',2, 'Place Brassens', 'Blagnac', 'Easy Jet');
Première partie de la transaction.
;
UPDATE Compagnie SET nrue = 125
WHERE comp = 'AF';
UPDATE Compagnie SET ville = 'Castanet'
WHERE comp = 'C1';
Deuxième partie de la transaction.
;
DELETE FROM Compagnie WHERE comp = 'C1';
Troisième partie de la transaction.
-;
Première partie à valider.
-;
Deuxième partie à valider.
-Troisième partie à valider.
;
Tout à invalider.
;
END;
Valide la ou les sous-parties.
Web
SAVEPOINT P1
SAVEPOINT P2
ROLLBACK TO SAVEPOINT P1
ROLLBACK TO SAVEPOINT P2
ROLLBACK TO SAVEPOINT P3
ROLLBACK
COMMIT
Programmation procédurale
230
© Éditions Eyrolles
Le tableau suivant décrit une transaction MySQL découpée en trois parties. Le programmeur
aura le choix entre les instructions ROLLBACK TO SAVEPOINT indiquées en commentaire
pour valider tout ou partie de la transaction. Il faudra finalement se décider entre COMMIT et
ROLLBACK.
L’instruction SAVEPOINT déclare un point de validation.
Transactions imbriquées
Il n’est pas possible d’imbriquer plusieurs transactions se déroulant dans différents blocs.
Il n’est pas possible d’invalider par ROLLBACK une commande SQL du LDD ou du LCD rencontrée (CREATE, ALTER, DROP…).
Tableau 6-24 Transaction découpée
Code MYSQL
Commentaires
BEGIN
SET AUTOCOMMIT = 0;
INSERT INTO Compagnie VALUES
('C2',2, 'Place Brassens', 'Blagnac', 'Easy Jet');
Première partie de la transaction.
;
UPDATE Compagnie SET nrue = 125
WHERE comp = 'AF';
UPDATE Compagnie SET ville = 'Castanet'
WHERE comp = 'C1';
Deuxième partie de la transaction.
;
DELETE FROM Compagnie WHERE comp = 'C1';
Troisième partie de la transaction.
-;
Première partie à valider.
-;
Deuxième partie à valider.
-Troisième partie à valider.
;
Tout à invalider.
;
END;
Valide la ou les sous-parties.
Web
SAVEPOINT P1
SAVEPOINT P2
ROLLBACK TO SAVEPOINT P1
ROLLBACK TO SAVEPOINT P2
ROLLBACK TO SAVEPOINT P3
ROLLBACK
COMMIT
