ROLLBACK
Annulez la transaction.
DSQL, ESQL
ROLLBACK [WORK] [TRANSACTION tr_name] [RETAIN [SNAPSHOT] | TO SAVEPOINT sp_name] [RELEASE];
Paramètre | Description |
---|---|
tr_name |
Nom de la transaction. Disponible uniquement dans ESQL. |
sp_name |
Le nom du point de sauvegarde, disponible uniquement dans DSQL. |
L’instruction ROLLBACK
annule tous les changements de données de la base de données (ajouts, modifications, suppressions) effectués dans le contexte de cette transaction. L’instruction ROLLBACK
ne provoque jamais d’erreurs. Si l’instruction RETAIN
n’est pas spécifiée, elle libère toutes les ressources du serveur associées à l’exécution de cette transaction.
La clause optionnelle TRANSACTION
spécifie le nom de la transaction. La clause TRANSACTION
n’est disponible que dans Embedded SQL. Si la clause TRANSACTION
n’est pas spécifiée, l’instruction ROLLBACK
s’applique à la transaction par défaut.
Note
|
Les transactions nommées permettent à plusieurs transactions actives de s’exécuter simultanément dans la même application. Une variable du langage de base portant le même nom doit être déclarée et initialisée. En DSQL, cette restriction empêche la spécification dynamique des noms de transaction. |
Le mot-clé facultatif WORK
ne peut être utilisé que pour des raisons de compatibilité avec d’autres systèmes de gestion de bases de données relationnelles.
Le mot-clé RETAIN
indique que toutes les actions de modification des données dans le contexte de cette transaction sont annulées et que la transaction elle-même continue d’être active, conservant son identifiant ainsi que l’état du curseur qu’elle avait avant que la transaction ne soit soft-committed. Ainsi, les ressources allouées à la transaction ne sont pas libérées.
Pour les niveaux d’isolation SNAPSHOT
et SNAPSHOT TABLE STABILITY
, l’état de la base de données reste tel qu’il était lorsque la transaction a été initialement lancée, mais dans le cas du niveau d’isolation READ COMMITTED
, la base de données sera telle qu’elle était lorsque l’instruction ROLLBACK RETAIN
a été exécutée. Si une transaction est annulée tout en conservant son contexte, il n’est pas nécessaire de réexécuter l’instruction SELECT
pour récupérer les données de la table.