PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.6 » Référence » Commandes SQL » RELEASE SAVEPOINT

RELEASE SAVEPOINT

RELEASE SAVEPOINT — relâche un point de sauvegarde précédemment défini

Synopsis

RELEASE [ SAVEPOINT ] nom_pointsauvegarde
  

Description

RELEASE SAVEPOINT relâche le point de sauvegarde nommé et tous les points de sauvegardes actifs créés après le point de sauvegarde nommé. Il libère leurs ressources. Tous les changements réalisés après la création du point de sauvegarde qui n'étaient pas déjà annulés sont fusionnés dans la transaction ou le point de sauvegarde qui était actif quand le point de sauvegarde nommé a été créé. Les changements réalisés après RELEASE SAVEPOINT feront aussi partie de cette transaction ou point de sauvegarde actif..

RELEASE SAVEPOINT détruit aussi tous les points de sauvegarde créés ultérieurement au point de sauvegarde indiqué.

Paramètres

nom_pointsauvegarde

Le nom du point de sauvegarde à relâcher.

Notes

Spécifier un nom de point de sauvegarde qui n'a pas été défini est une erreur.

Il n'est pas possible de relâcher un point de sauvegarde lorsque la transaction est dans un état d'annulation ; pour ce faire, utilisez ROLLBACK TO SAVEPOINT.

Si plusieurs points de transaction ont le même nom, seul le plus récemment défini et non libéré est libéré. Des commandes répétées libéreront progressivement les anciens points de transaction.

Exemples

Pour établir puis relâcher 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 3 et 4.

Un exemple plus complexe avec plusieurs sous-transactions imbriquées :

BEGIN;
    INSERT INTO table1 VALUES (1);
    SAVEPOINT sp1;
    INSERT INTO table1 VALUES (2);
    SAVEPOINT sp2;
    INSERT INTO table1 VALUES (3);
    RELEASE SAVEPOINT sp2;
    INSERT INTO table1 VALUES (4))); -- génère une erreur

Dans cet exemple, l'application demande de relâcher le point de sauvegarde sp2, qui a inséré 3. Ceci modifie le contexte de la transaction de l'insertion en sp1. Quand l'instruction qui essaie d'insérer la valeur 4 génère une erreur, l'insertion de 2 et 4 est perdue parce qu'elles sont dans le même point de sauvegarde maintenant annulé, et la valeur 3 est dans le même contexte de transaction. L'application peut maintenant uniquement choisir une de ces deux commandes, car toutes les autres seront ignorées :

   ROLLBACK;
   ROLLBACK TO SAVEPOINT sp1;

Choisir ROLLBACK annulera tout, ceci incluant la valeur 1 alors que ROLLBACK TO SAVEPOINT sp1 retiendra la valeur 1 et permettra à la transaction de continuer.

Compatibilité

Cette commande est conforme au standard SQL. Le standard impose le mot clé SAVEPOINT mais PostgreSQL autorise son omission.