Repositionnement des transactions
Le repositionnement d'une transaction annule ses modifications. Vous pouvez annuler (rollback) l'intégralité de la transaction en cours, ou uniquement vers un point d'enregistrement spécifique.
Pour repositionner la transaction courante uniquement à un point d'enregistrement spécifié, vous devez utiliser l'instruction ROLLBACK avec la clause TO SAVEPOINT.
Pour repositionner l'ensemble de la transaction courante, utilisez l'énoncé ROLLBACK sans la clause TO SAVEPOINT ou (dans l'environnement SQL Developer) l'icône Repositionner les modifications.
Le repositionnement de l'ensemble de la transaction en cours effectue les opérations suivantes :
-
Met fin à la transaction
-
Annule toutes ses modifications
-
Efface tous ses points de sauvegarde
-
Libère tous les verrous de transaction
Le repositionnement de la transaction en cours uniquement vers le point d'enregistrement indiqué effectue les opérations suivantes :
-
Ne termine pas la transaction
-
Annule uniquement les modifications effectuées après le point d'enregistrement spécifié
-
Efface uniquement les points d'enregistrement définis après le point d'enregistrement spécifié (à l'exclusion du point d'enregistrement spécifié lui-même)
-
Libère tous les verrous de table et de ligne acquis après le point d'enregistrement spécifié
Les autres transactions qui ont demandé l'accès aux rangées verrouillées après le point d'enregistrement spécifié doivent continuer à attendre que la transaction soit validée ou repositionnée. Les autres transactions qui n'ont pas demandé les enregistrements peuvent demander et accéder immédiatement aux enregistrements.
Pour voir l'effet d'un repositionnement dans SQL Developer, vous devrez peut-être cliquer sur l'icône Actualiser.
À la suite de l'exemple 3-7, la table REGIONS a une région appelée 'Moyen-Orient et Afrique' et une région appelée 'Afrique'. Exemple 3-8 corrige ce problème (une transaction très simple) et vérifie la modification, mais repositionne la transaction et vérifie le repositionnement.
Exemple 3-8 Repositionnement d'une transaction entière
Avant la transaction :
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Résultat :
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Transaction (table de modification) :
UPDATE REGIONS
SET REGION_NAME = 'Middle East'
WHERE REGION_NAME = 'Middle East and Africa';
Résultat :
1 row updated.
Vérifier la modification :
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Résultat :
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East
5 Africa
5 rows selected.
Repositionner la transaction :
ROLLBACK;
Résultat :
Rollback complete.
Vérifier le repositionnement :
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Résultat :
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Voir aussi : Informations de référence sur le langage SQL pour Oracle Database pour plus d'informations sur l'énoncé ROLLBACK