Você está na página 1de 6

Laguna Gonzlez Raymundo

Administracin de Base de Datos


Grupo: 5753

ROLLBACK

Sentencia ROLLBACK
Versin 9.7.0, Versin 11.1.0, Versin 10.5.0, Versin 10.1.0, Versin 9.8.0,
Versin 9.5.0
La sentencia ROLLBACK se utiliza para restituir los cambios que se han hecho en
la base de datos dentro de una unidad de trabajo o punto de salvaguarda.
Invocacin
Esta sentencia se puede incorporar a un programa de aplicacin o emitir mediante
el uso de sentencias de SQL dinmico. Se trata de una sentencia ejecutable que
puede prepararse de forma dinmica.
Autorizacin
No se necesita.
Sintaxis
.-WORK-.
>>-ROLLBACK--+------+------------------------------------------->
>--+--------------------------------------------+--------------><
'-TO SAVEPOINT--+--------------------------+-'
'-nombre-punto-salvaguarda-'
Descripcin
La unidad de trabajo en la que se ejecuta la sentencia ROLLBACK se termina y se
inicia una nueva unidad de trabajo. Se restituyen todos los cambios realizados en
la base de datos durante la unidad de trabajo.
Sin embargo, las sentencias siguientes no estn bajo el control de la transaccin y
los cambios que realicen sern independientes de la emisin de la sentencia
ROLLBACK:
La generacin de valores de secuencia y de identidad no estn bajo el control de
la transaccin. Los valores generados y consumidos por la expresin-nextval o por
la insercin de filas en una tabla que contiene una columna de identidad son

Laguna Gonzlez Raymundo


Administracin de Base de Datos
Grupo: 5753
independientes de la emisin de la sentencia ROLLBACK. Asimismo, la emisin
de la sentencia ROLLBACK no afecta al valor devuelto por la expresin-prevval, ni
la funcin IDENTITY_VAL_LOCAL.
La modificacin de los valores de variables globales no est bajo el control de la
transaccin. Las sentencias ROLLBACK no afectan a los valores asignados a las
variables globales.
TO SAVEPOINT
Especifica que debe realizarse una retrotraccin parcial (ROLLBACK TO
SAVEPOINT). Si no hay ningn punto de salvaguarda activo en el nivel del punto
de salvaguarda actual (consulte la seccin "Normas" de la descripcin de la
sentencia SAVEPOINT), se devuelve un error (SQLSTATE 3B502). Tras una
retrotraccin satisfactoria, el punto de salvaguarda contina existiendo, pero se
liberan los puntos de salvaguarda anidados y ya no existen. Se considera que los
puntos de salvaguarda anidados, si existen, se han retrotrado y despus liberado
como parte de la retrotraccin hasta el punto de salvaguarda actual. Si no se
facilita un nombre-puntosalvaguarda, la retrotraccin se produce hasta el punto de
salvaguarda definido ms recientemente dentro del nivel de punto de salvaguarda
actual.
Si se omite esta clusula, la sentencia ROLLBACK retrotrae toda la transaccin.
Adems, se liberan todos los puntos de salvaguarda definidos dentro de la
transaccin.
nombre-punto-salvaguarda
Especifica el punto de salvaguarda que se debe utilizar en la operacin de
retrotraccin. El nombre-puntosalvaguarda especificado no puede empezar por
'SYS' (SQLSTATE 42939). Tras una operacin de retrotraccin satisfactoria, el
punto de salvaguarda nombrado contina existiendo. Si el nombre de punto de
salvaguarda no existe, se devuelve un error (SQLSTATE 3B001). Se deshacen los
cambios que se han hecho en datos y esquemas desde que se defini el punto de
salvaguarda.
Notas
Cuando se ejecuta un ROLLBACK de la unidad de trabajo se liberan todos
los bloqueos mantenidos. Se cierran todos los cursores abiertos. Se liberan
todos los localizadores de LOB.
La ejecucin de la sentencia ROLLBACK no afecta a las sentencias SET
que cambian los valores del registro especial ni a la sentencia RELEASE.
Si el programa finaliza de forma anmala, la unidad de trabajo se retrotrae
implcitamente.
La colocacin de sentencias en antememoria se ve afectada por la
operacin de retrotraccin.
El efecto que una sentencia ROLLBACK TO SAVEPOINT tiene sobre los
cursores depende de las sentencias contenidas en el punto de salvaguarda.
Si el punto de salvaguarda contiene un DDL del cual depende un
cursor, el cursor se marca como no vlido. Los intentos para utilizar
ese cursor dan lugar a un error (SQLSTATE 57007).
En otro caso:

Laguna Gonzlez Raymundo


Administracin de Base de Datos
Grupo: 5753
Si se hace referencia al cursor en el punto de salvaguarda, el
cursor permanece abierto y se coloca delante de la primera
fila lgica de la tabla de resultados. (FETCH debe realizarse
antes de emitirse una sentencia UPDATE o DELETE con
posicin.)
En otro caso, el cursor no queda afectado por ROLLBACK TO
SAVEPOINT (permanece abierto y posicionado).
Los nombres de sentencias preparadas dinmicamente siguen siendo
vlidos, aunque la sentencia puede volver a prepararse implcitamente,
como resultado de operaciones DDL que se retrotraen dentro del punto de
salvaguarda.
Una operacin ROLLBACK TO SAVEPOINT descartar las tablas
temporales creadas que se hayan creado en el punto de salvaguarda. Si
una tabla temporal creada se modifica en el punto de salvaguarda y esa
tabla se ha definido como no anotada cronolgicamente, todas las filas de
la tabla se suprimen.
Una operacin ROLLBACK TO SAVEPOINT descartar las tablas
temporales declaradas que se hayan declarado en el punto de salvaguarda.
Si una tabla temporal declarada se modifica en el punto de salvaguarda y
esa tabla se ha definido como no anotada cronolgicamente, todas las filas
de la tabla se suprimen.
Despus de una sentencia ROLLBACK TO SAVEPOINT se conservan
todos los bloqueos.
Despus de una operacin ROLLBACK TO SAVEPOINT se conservan
todos los localizadores de LOB.

Ejemplo
Suprima las modificaciones realizadas desde el ltimo punto de confirmacin o
retrotraccin.
ROLLBACK WORK

Laguna Gonzlez Raymundo


Administracin de Base de Datos
Grupo: 5753

Commit
En el contexto de la Ciencia de la computacin y la gestin de datos, commit
(accin de comprometer) se refiere a la idea de consignar un conjunto de cambios
"tentativos" de forma permanente. Un uso popular es al final de una transaccin de
base de datos.
Una sentencia COMMIT en SQL finaliza una transaccin de base de datos dentro
de un sistema gestor de base de datos relacional (RDBMS) y pone visibles todos
los cambios a otros usuarios. El formato general es emitir una sentencia BEGIN
WORK, una o ms sentencias SQL, y entonces la sentencia COMMIT.
Alternativamente, una sentencia ROLLBACK se puede emitir, la cual deshace todo
el trabajo realizado desde que se emiti BEGIN WORK. Una sentencia COMMIT
publicar cualquiera de los savepoints (puntos de recuperacin) existentes que
puedan estar en uso.
En trminos de transacciones, lo opuesto de commit para descartar los cambios
"en tentativa" de una transaccin, es un rollback.
COMMIT en SQL
El comando COMMIT es una comando usado en transacciones de SQL. Su
funcin es guardar las transacciones realizadas en la base de datos. Normalmente
los SGBD vienen configurados para guardar las transacciones automticamente,
pero si deseamos, podemos deshabilitar dicha opcin para algunos usuarios.
SQL COMMIT
Si se desea deshabilitar la autoconfirmacin en SQL SERVER usa la siguiente
sentencia:
SET IMPLICIT_TRANSACTIONS ON
En el caso de MYSQL usa:
SET AUTOCOMMIT=0
Su uso es sencillo, simplemente ubicamos el comando luego de la transaccin y
listo.

Laguna Gonzlez Raymundo


Administracin de Base de Datos
Grupo: 5753
Ejemplo
Consideremos nuestra tabla cliente:

Tabla CLIENTE
Ahora eliminaremos los registros cuya edad sea 21 aos y confirmaremos con
COMMIT:
DELETE FROM CLIENTE WHERE EDAD=21;
COMMIT;
Como resultado obtenemos la siguiente tabla:

Confirmacin con COMMIT

Laguna Gonzlez Raymundo


Administracin de Base de Datos
Grupo: 5753

Você também pode gostar