annuler, ni valider les requêtes faites depuis)
Exemple : exécutez les requêtes suivantes.
Code : SQL
START TRANSACTION;
INSERT INTO Animal (nom, espece_id, date_naissance, sexe)
VALUES ('Popi', 5, '2007-03-11 12:45:00', 'M');
SAVEPOINT jalon1;
INSERT INTO Animal (nom, espece_id, date_naissance, sexe)
VALUES ('Momo', 5, '2007-03-12 05:23:00', 'M');
ROLLBACK TO SAVEPOINT jalon1;
INSERT INTO Animal (nom, espece_id, date_naissance, sexe)
VALUES ('Mimi', 5, '2007-03-12 22:03:00', 'F');
COMMIT;
On n'utilise qu'une seule transaction, on valide à la fin, et pourtant la seconde insertion n'a pas été faite au final, puisqu'elle a été
annulée grâce au jalon. Seuls Popi et Mimi existent.
Code : SQL
SELECT id, sexe, date_naissance, nom, espece_id, mere_id, pere_id
FROM Animal
WHERE espece_id = 5;
id sexe date_naissance
nom espece_id mere_id pere_id
69 F
2012-02-13 15:45:00 Baba 5
NULL
NULL
70 M
2012-02-13 15:48:00 Bibo
5
72
NULL
72 F
2008-02-01 02:25:00 Momy 5
NULL
NULL
73 M
2007-03-11 12:45:00 Popi
5
NULL
NULL
75 F
2007-03-12 22:03:00 Mimi 5
NULL
NULL
Validation implicite et commandes non-annulables
Vous savez déjà que pour terminer une transaction, il faut utiliser les commandes COMMIT ou ROLLBACK, selon que l'on veut
valider les requêtes ou les annuler.
Ça, c'est la manière classique et recommandée. Mais il faut savoir qu'un certain nombre d'autres commandes auront aussi pour
effet de clôturer une transaction. Et pas seulement la clôturer, mais également valider toutes les requêtes qui ont été faites dans
cette transaction. Exactement comme si vous utilisiez COMMIT.
Par ailleurs, ces commandes ne peuvent pas être annulées par un ROLLBACK.
Commandes DDL
Toutes les commandes qui créent, modifient, suppriment des objets dans la base de données valident implicitement les
transactions.
Ces commandes forment ce qu'on appelle les requêtes DDL, pour Data Definition Langage.
Partie 5 : Sécuriser et automatiser ses actions
227/414
www.openclassrooms.com
Précédent

- 227/413

Suivant