AND nom = 'Bibo';
-- Nouvelle transaction
START TRANSACTION;
-- Suppression de Buba
DELETE FROM Animal
WHERE espece_id = 5
AND nom = 'Buba';
-- On valide les requêtes de la transaction, ce qui termine celleci
COMMIT;
Si vous avez bien suivi, vous devriez savoir les changements qui ont été faits.
Secret (cliquez pour afficher)
On a inséré Momy (insertion hors transaction)
Momy n'est pas la mère de Baba (modification dans une transaction dont les requêtes ont été annulées)
Momy est la mère de Bibo (modification hors transaction)
Buba a été supprimée (suppression dans une transaction dont les requêtes ont été commitées)
Code : SQL
SELECT id, nom, espece_id, mere_id
FROM Animal
WHERE espece_id = 5;
id nom espece_id mere_id
69 Baba 5
NULL
70 Bibo
5
72
72 Momy 5
NULL
Jalon de transaction
Lorsque l'on travaille dans une transaction, et que l'on constate que certaines requêtes posent problème, on n'a pas toujours
envie de faire un rollback depuis le début de la transaction, annulant toutes les requêtes alors qu'une partie aurait pu être validée.
Il n'est pas possible de démarrer une transaction à l'intérieur d'une transaction. Par contre, on peut poser des jalons de
transaction. Il s'agit de points de repère, qui permettent d'annuler toutes les requêtes exécutées depuis ce jalon, et non toutes les
requêtes de la transaction.
Syntaxe
Trois nouvelles commandes suffisent pour pouvoir utiliser pleinement les jalons :
Code : SQL
SAVEPOINT nom_jalon; -- Crée un jalon avec comme nom "nom_jalon"
ROLLBACK [WORK] TO [SAVEPOINT] nom_jalon; -- Annule les requêtes
exécutées depuis le jalon "nom_jalon", WORK et SAVEPOINT ne sont
pas obligatoires
RELEASE SAVEPOINT nom_jalon; -- Retire le jalon "nom_jalon" (sans
Partie 5 : Sécuriser et automatiser ses actions
226/414
www.openclassrooms.com
-- Nouvelle transaction
START TRANSACTION;
-- Suppression de Buba
DELETE FROM Animal
WHERE espece_id = 5
AND nom = 'Buba';
-- On valide les requêtes de la transaction, ce qui termine celleci
COMMIT;
Si vous avez bien suivi, vous devriez savoir les changements qui ont été faits.
Secret (cliquez pour afficher)
On a inséré Momy (insertion hors transaction)
Momy n'est pas la mère de Baba (modification dans une transaction dont les requêtes ont été annulées)
Momy est la mère de Bibo (modification hors transaction)
Buba a été supprimée (suppression dans une transaction dont les requêtes ont été commitées)
Code : SQL
SELECT id, nom, espece_id, mere_id
FROM Animal
WHERE espece_id = 5;
id nom espece_id mere_id
69 Baba 5
NULL
70 Bibo
5
72
72 Momy 5
NULL
Jalon de transaction
Lorsque l'on travaille dans une transaction, et que l'on constate que certaines requêtes posent problème, on n'a pas toujours
envie de faire un rollback depuis le début de la transaction, annulant toutes les requêtes alors qu'une partie aurait pu être validée.
Il n'est pas possible de démarrer une transaction à l'intérieur d'une transaction. Par contre, on peut poser des jalons de
transaction. Il s'agit de points de repère, qui permettent d'annuler toutes les requêtes exécutées depuis ce jalon, et non toutes les
requêtes de la transaction.
Syntaxe
Trois nouvelles commandes suffisent pour pouvoir utiliser pleinement les jalons :
Code : SQL
SAVEPOINT nom_jalon; -- Crée un jalon avec comme nom "nom_jalon"
ROLLBACK [WORK] TO [SAVEPOINT] nom_jalon; -- Annule les requêtes
exécutées depuis le jalon "nom_jalon", WORK et SAVEPOINT ne sont
pas obligatoires
RELEASE SAVEPOINT nom_jalon; -- Retire le jalon "nom_jalon" (sans
Partie 5 : Sécuriser et automatiser ses actions
226/414
www.openclassrooms.com
