FirebirdSQL logo

ROLLBACK TO SAVEPOINT

La clause optionnelle TO SAVEPOINT de l’instruction ROLLBACK spécifie le nom du point de sauvegarde vers lequel le rollback se produit.Dans ce cas, toutes les modifications effectuées dans la transaction à partir du point de sauvegarde créé (SAVEPOINT) sont annulées.

L’opérateur ROLLBACK TO SAVEPOINT effectue les opérations suivantes :

  • Toutes les modifications de la base de données effectuées dans la transaction à partir du point de sauvegarde créé sont annulées. Les variables utilisateur définies avec RDB$SET_CONTEXT() restent inchangées ;

  • Tous les points de sauvegarde créés après le point de sauvegarde nommé sont détruits. Tous les points de sauvegarde antérieurs, comme le point de sauvegarde lui-même, sont conservés. Cela signifie qu’il est possible de revenir plusieurs fois au même point de sauvegarde ;

  • Tous les enregistrements verrouillés explicites et implicites du point de sauvegarde sont libérés. Les autres transactions qui ont précédemment demandé l’accès aux lignes verrouillées après le point de sauvegarde doivent continuer à attendre jusqu’à ce que la transaction soit validée ou annulée. D’autres transactions qui n’ont pas encore demandé l’accès à ces rangées peuvent demander et accéder immédiatement aux rangées déverrouillées.

Voir aussi :

SAVEPOINT.

SAVEPOINT

affectation

Création d’un point de sauvegarde.

Disponible en

DSQL

Syntaxe
SAVEPOINT sp_name
Table 1. Paramètres de l’opérateur SAVEPOINT
Paramètre Description

sp_name

Nom du point de sauvegarde, qui doit être unique dans la transaction.

L’instruction SAVEPOINT crée un point de sauvegarde compatible avec SQL:99 auquel les opérations de la base de données peuvent être ramenées ultérieurement sans annuler les actions effectuées depuis le début de la transaction. Les mécanismes de point de sauvegarde sont également connus sous le nom de transactions imbriquées.

Si un nom de point de sauvegarde existe déjà dans une transaction, le point de sauvegarde existant sera supprimé et un nouveau sera créé avec le même nom.

Pour annuler les modifications apportées au point de sauvegarde, on utilise l’opérateur ROLLBACK TO SAVEPOINT.

Note

Le mécanisme de point de sauvegarde interne peut utiliser de grandes quantités de mémoire, surtout si vous mettez à jour les mêmes enregistrements plusieurs fois dans la même transaction. Si un point de sauvegarde n’est plus nécessaire, mais que vous n’êtes pas encore prêt à terminer la transaction, vous pouvez le supprimer avec l’opérateur RELEASE SAVEPOINT, libérant ainsi des ressources.

Example 1. DSQL session utilisant des points de sauvegarde
CREATE TABLE TEST (ID INTEGER);
COMMIT;
INSERT INTO TEST VALUES (1);
COMMIT;
INSERT INTO TEST VALUES (2);
SAVEPOINT Y;
DELETE FROM TEST;
SELECT * FROM TEST; -- renvoie une chaîne vide
ROLLBACK TO Y;
SELECT * FROM TEST; -- renvoie deux lignes
ROLLBACK;
SELECT * FROM TEST; -- renvoie une seule ligne