Annulation des transactions
L'annulation d'une transaction annule les modifications lui ayant été apportées. Vous pouvez annuler la totalité de la transaction en cours ou l'annuler uniquement à un point de sauvegarde spécifié.
Pour annuler la transaction en cours uniquement à un point de sauvegarde spécifié, vous devez utiliser l'instruction ROLLBACK avec la clause TO SAVEPOINT.
Pour annuler la totalité de la transaction en cours, utilisez l'instruction ROLLBACK sans la clause TO SAVEPOINT ou (dans l'environnement SQL Developer) l'icône Annuler les modifications.
L'annulation de la totalité de la transaction en cours effectue les opérations suivantes :
-
met fin à la transaction,
-
annule toutes les modifications apportées,
-
efface tous les points de sauvegarde,
-
libère tous les verrous de transaction.
L'annulation de la transaction en cours uniquement au point d'enregistrement spécifié effectue les opérations suivantes :
-
ne met pas fin à la transaction,
-
annule uniquement les modifications effectuées après le point de sauvegarde spécifié,
-
efface uniquement les points de sauvegarde définis après le point de sauvegarde spécifié (à l'exclusion du point de sauvegarde spécifié lui-même),
-
libère tous les verrous de table et de ligne acquis après le point de sauvegarde spécifié.
Les autres transactions ayant demandé un accès aux lignes verrouillées après le point de sauvegarde spécifié doivent attendre que la transaction soit validée ou annulée. Les autres transactions n'ayant pas demandé un accès aux lignes peuvent en demander un et accéder immédiatement aux lignes.
Pour voir l'effet d'une annulation dans SQL Developer, vous devez cliquer sur l'icône Régénérer.
Suite à l'exemple 3-7, la table REGIONS possède une région appelée "Moyen-Orient et Afrique" et une région appelée "Afrique". L'exemple 3-8 corrige ce problème (une transaction très simple) et vérifie la modification, puis annule la transaction et vérifie l'annulation.
Exemple 3-8 Annulation de l'ensemble d'une transaction
Avant la transaction :
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Résultats :
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Transaction (modifier la table) :
UPDATE REGIONS
SET REGION_NAME = 'Middle East'
WHERE REGION_NAME = 'Middle East and Africa';
Résultats :
1 row updated.
Vérification de la modification :
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Résultats :
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East
5 Africa
5 rows selected.
Annulation de la transaction :
ROLLBACK;
Résultats :
Rollback complete.
Vérification de l'annulation :
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Résultats :
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Voir aussi : Référence du langage SQL Oracle Database pour plus d'informations sur l'instruction ROLLBACK.