ROLLBACK TO SAVEPOINT

Nom

ROLLBACK TO SAVEPOINT -- annule les instructions depuis un point de sauvegarde

Synopsis

ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] nom_pointsauvegarde

Description

Annule toutes les commandes qui ont été exécutées après l'établissement du point de sauvegarde. Le point de sauvegarde reste valide et peut être annulé de nouveau plus tard si nécessaire.

ROLLBACK TO SAVEPOINT détruit implicitement tous les points de sauvegarde qui ont été établis après le point de sauvegarde indiqué.

Paramètres

nom_pointsauvegarde

Le point de sauvegarde où retourner.

Notes

Utilisez RELEASE SAVEPOINT pour détruire un point de sauvegarde sans annuler les effets de commandes exécutées après son établissement.

Spécifier un nom de point de sauvegarde inexistant est une erreur.

Les curseurs ont un comportement quelque peu non transactionnel en ce qui concerne les points de sauvegarde. Tout curseur ouvert à l'intérieur d'un point de sauvegarde est fermé lorsque le point de sauvegarde est annulé. Si un curseur ouvert précédemment est affecté à une commande FETCH à l'intérieur d'un point de sauvegarde annulé un peu plus tard, la position du curseur reste à la position que FETCH lui a donné (c'est-à-dire que FETCH n'est pas annulé). Fermer un curseur n'est pas non plus défait par une annulation. Un curseur dont l'exécution cause l'annulation d'une transaction est placé dans un état non exécutable si bien que, bien que la transaction puisse être restaurée avec ROLLBACK TO SAVEPOINT, le curseur ne peut plus être utilisé.

Exemples

Pour annuler les effets des commandes exécutées après l'établissement de mon_pointsauvegarde :

ROLLBACK TO SAVEPOINT mon_pointsauvegarde;

La position d'un curseur n'est pas affectée par l'annulation des points de sauvegarde :

BEGIN;

DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2;

SAVEPOINT foo;

FETCH 1 FROM foo;
 ?column? 
----------
        1

ROLLBACK TO SAVEPOINT foo;

FETCH 1 FROM foo;
 ?column? 
----------
        2

COMMIT;

Compatibilité

Le standard SQL:2003 spécifie que le mot clé SAVEPOINT est obligatoire mais PostgreSQL et Oracle autorisent son omission. SQL:2003 autorise seulement WORK, pas TRANSACTION, comme mot après ROLLBACK. De plus, SQL:2003 dispose d'une clause optionnelle AND [ NO ] CHAIN qui n'est actuellement pas supportée par PostgreSQL. Sinon, cette commande est conforme au standard SQL.

Voir aussi

BEGIN, COMMIT, RELEASE SAVEPOINT, ROLLBACK, SAVEPOINT