Está en la página 1de 2

hermosaprogramacion.

com

http://www.hermosaprogramacion.com/2014/05/sql-savepoint/

SAVEPOINT en SQL
James
Revelo

El comando SAVEPOINT guarda un punto de restauracin de la base de datos, que luego puede ser retornado
usando una sentencia ROLLBACK. Lo que nos cae de perlas si queremos deshacer solo una parte de la
transaccin y no la transaccin completa.

Definicin
SAVEPOINT NombreDelPunto;
Cuando queramos deshacer los cambios de la transaccion hasta un punto predeterminado, usaremos el comando
ROLLBACK de la siguiente manera:
ROLLBACK TO NombreDelPunto;

Definicin SQL SERVER


SAVE TRAN NombreDelPunto;
Crear punto de restauracin
ROLLBACK TRAN NombredelPunto; Volver al punto de restauracin
Ejemplo
Considere la tabla CLIENTE:
Eliminaremos tres filas. Antes de eliminar cada fila crearemos un
punto de restauracin que permita devolver la base de datos a 3
estados.
SAVEPOINT P1;
DELETE FROM CLIENTE
WHERE ID=1;
SAVEPOINT P2;
DELETE FROM CLIENTE
WHERE ID=2;
SAVEPOINT P3;
DELETE FROM CLIENTE
WHERE ID=3;
A cada punto de restauracin le pusimos P y su posicin de
restauracin. Miremos como queda nuestra tabla clientes al ejecutar
Tabla CLIENTE
estas transacciones:
Supongamos que nos arrepentimos de lo que hicimos y ahora queremos devolvernos al punto de restauracin P2.
Esta orden har que los resultados de las dos ultimas instrucciones DELETE se reviertan:
TARAN! Los clientes con ID igual a 2 y 3 han vuelto!
Que pasara si quisiramos volver al punto de restauracin P1 luego de esto?
Pues el cliente con ID igual a 1 tambin regresara.
Podra volver al P1 y luego a P3?
Negativo! no es posible volver de un punto anterior a uno posterior, ya que la restauracin tambin revierte la
creacin de puntos de restauracin.

Si vuelvo al P1 y luego quiero volver a P1 de nuevo, que pasara?


Nada, ya que el punto de restauracin hace rato se liber. Solo tendrs un mensaje de error indicndote que ese
punto no existe.

Tabla cliente afectada

La tabla CLIENTE luego del ROLLBACK

También podría gustarte