© Éditions Eyrolles
229
chapitre n° 6
Bases du langage de programmation
delimiter $
DROP PROCEDURE sp1$
CREATE PROCEDURE sp1()
BEGIN
SET AUTOCOMMIT = 0;
INSERT INTO TableaVous VALUES (...);
END;
$
--appel de la transaction
CALL sp1()$
SELECT * FROM TableaVous$
Exécutez ce bloc dans l’interface, puis déconnectez-vous soit en cassant la fenêtre (icône en
haut à droite), soit proprement avec exit. Reconnectez-vous et constatez que l’enregistrement n’est pas présent dans votre table. Même quand la fin du programme est normale, la transaction n’est pas validée (car il manque COMMIT). Relancez le bloc en ajoutant cette
instruction après l’insertion. Notez que l’enregistrement est présent désormais dans votre
table, même après une déconnexion douce ou dure.
Contrôle des transactions
Il est intéressant de pouvoir découper une transaction en insérant des points de validation
(savepoints) qui rendent possible l’annulation de tout ou partie des opérations composant
ladite transaction.
La figure suivante illustre une transaction découpée en trois parties. L’instruction ROLLBACK
peut s’écrire sous différentes formes. Ainsi ROLLBACK
TO
SAVEPOINT
Pointvalidation1 invalidera les UPDATE et le DELETE tout en laissant la possibilité de
confirmer l’instruction INSERT (en fonction des commandes se trouvant après ce ROLLBACK
restreint et de la manière dont la session se terminera).
Web
Figure 6-6 Points de validation
Début Transaction
INSERT…
Point validation 1
UPDATE…
UPDATE…
Point validation 2
DELETE …
…
Fin Transaction
ROLLBACK
ROLLBACK TO
SAVEPOINT
Point validation1
ROLLBACK TO SAVEPOINT
Point validation2
Précédent

- 251/418

Suivant