SAVEPOINT
SAVEPOINT — définit un nouveau point de sauvegarde à
l'intérieur de la transaction en cours
Synopsis
SAVEPOINT nom_pointsauvegarde
Description
SAVEPOINT
établit un
nouveau point de sauvegarde à l'intérieur de la transaction en
cours.
Un point de sauvegarde est une marque spéciale à l'intérieur d'une
transaction qui autorise l'annulation de toutes les commandes
exécutées après son établissement, restaurant la transaction dans
l'état où elle était au moment de l'établissement du point de
sauvegarde.
Paramètres
-
nom_pointsauvegarde
-
Le nom du nouveau point de sauvegarde.
Notes
Utilisez ROLLBACK TO SAVEPOINT pour annuler un
point de sauvegarde. Utilisez RELEASE
SAVEPOINT pour détruire un point de sauvegarde, conservant
l'effet des commandes exécutées après son établissement.
Les points de sauvegarde peuvent seulement être établis à
l'intérieur d'un bloc de transaction. Plusieurs points de
sauvegarde peuvent être définis dans une transaction.
Exemples
Pour établir un point de sauvegarde et annuler plus tard les effets
des commandes exécutées après son établissement :
BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT mon_pointsauvegarde;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT mon_pointsauvegarde;
INSERT INTO table1 VALUES (3);
COMMIT;
La transaction ci-dessus insère les valeurs 1 et 3, mais pas 2.
Pour établir puis détruire un point de sauvegarde :
BEGIN;
INSERT INTO table1 VALUES (3);
SAVEPOINT mon_pointsauvegarde;
INSERT INTO table1 VALUES (4);
RELEASE SAVEPOINT mon_pointsauvegarde;
COMMIT;
La transaction ci-dessus insère à la fois les valeurs 3 et 4.
Compatibilité
SQL requiert la destruction automatique d'un point de sauvegarde
quand un autre point de sauvegarde du même nom est créé. Avec
PostgreSQL™, l'ancien point
de sauvegarde est conservé, mais seul le plus récent est utilisé
pour une annulation ou une libération. (Libérer le point de
sauvegarde le plus récent fait que l'ancien est de nouveau
accessible aux commandes
ROLLBACK TO
SAVEPOINT
et
RELEASE
SAVEPOINT
.) Sinon,
SAVEPOINT
est totalement conforme
à SQL.