Rollback de Transacciones
Al hacer rollback de una transacción, se deshacen sus cambios. Puede realizar rollback de toda la transacción actual o sólo hasta un punto de grabación especificado.
Para realizar ROLLBACK de la transacción actual sólo hasta un punto de guardado especificado, debe utilizar la sentencia ROLLBACK con la cláusula TO SAVEPOINT.
Para realizar ROLLBACK de toda la transacción actual, utilice la sentencia ROLLBACK sin la cláusula TO SAVEPOINT o (en el entorno de SQL Developer) el icono ROLLBACK Changes.
La reversión de toda la transacción actual realiza lo siguiente:
-
Se finaliza la transacción
-
Se revierten todos sus cambios
-
Se borran todos sus puntos de grabación
-
Se libera cualquier bloqueo de la transacción
Al revertir la transacción actual sólo hasta el punto de grabación especificado se realizan las siguientes acciones:
-
No se finaliza la transacción
-
Se revierten sólo los cambios realizados después del punto de grabación especificado
-
Se borran sólo los puntos de grabación definidos después del punto de grabación especificado (excepto el punto de grabación especificado en sí)
-
Se liberan todos los bloqueos de tabla y de fila adquiridos después del punto de grabación especificado
Las demás transacciones que han solicitado acceso a las filas bloqueadas después del punto de grabación especificado deben seguir esperando hasta que la transacción se confirme o se realice rollback de la misma. Las demás transacciones que no han solicitado las filas pueden solicitar y acceder a las filas inmediatamente.
Para ver el efecto de un rollback en SQL Developer, puede que tenga que hacer clic En el icono Refrescar.
Como resultado del Ejemplo 3-7, la tabla REGIONS tiene una región denominada 'Oriente Medio y África' y una región denominada 'África'. El ejemplo 3-8 corrige este problema (una transacción muy sencilla) y comprueba el cambio, pero, a continuación, realiza un rollback de la transacción y comprueba el rollback.
Ejemplo 3-8 Rollback de Toda una Transacción
Antes de la transacción:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Resultado:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Transacción (cambio de la tabla):
UPDATE REGIONS
SET REGION_NAME = 'Middle East'
WHERE REGION_NAME = 'Middle East and Africa';
Resultado:
1 row updated.
Comprobación del cambio:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Resultado:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East
5 Africa
5 rows selected.
Rollback de la transacción:
ROLLBACK;
Resultado:
Rollback complete.
Comprobación del rollback:
SELECT * FROM REGIONS
ORDER BY REGION_ID;
Resultado:
REGION_ID REGION_NAME
---------- -------------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
5 Africa
5 rows selected.
Consulte también: Referencia de lenguaje SQL de Oracle Database para obtener información sobre la sentencia ROLLBACK