Está en la página 1de 3

Sentencias relacionadas con el uso de transacciones en MySQL.

En MySQL cuando trabajamos con tablas InnoDB y el modo de ejecución AUTOCOMMIT está
activado cada sentencia se ejecuta automáticamente. Es el modo por defecto tal y como se ve
en la siguiente imagen:

SET AUTOCOMMIT=1 (ON)


En este caso también podemos llevar a cabo una transacción con varias sentencias si
utilizamos START TRANSACTION antes de la primera de ellas y terminamos con ROLLBACK o
COMMIT. Es como si lo deshabilitáramos temporalmente. Una vez terminada la transacción el
modo AUTOCOMMIT vuelve a su estado activado.

SET AUTOCOMMIT=0 (OFF)


Si deshabilitamos AUTOCOMMIT todas las sentencias se ejecutan como si se tratara de una
transacción abierta que se termina con ROLLBACK o COMMIT. Si la conexión se cierra sin
confirmar, la transacción se cancela.
Si una sentencia devuelve un error la confirmación o cancelación depende del error de que se
trate.

SAVEPOINT etiqueta……ROLLBACK TO SAVEPOINT


Con SAVEPOINT podemos crear un punto dentro de una transacción y darle un nombre
(etiqueta), de forma que al deshacer una transacción con ROLLBACK TO SAVEPOINT etiqueta
se deshacen únicamente las modificaciones hechas después de ese punto (etiqueta).
Ejemplo: En el ejemplo que ves a continuación el modo AUTOCOMMIT está activado. ¿Qué
ocurrirá en nuestra base de datos al ejecutar la siguiente transacción?

Efectivamente añadimos un nuevo cliente, pero no su vehículo.

Por tanto podemos resumir las sentencias implicadas en el uso de transacciones en la siguiente
tabla:

SET AUTOCOMMIT=0 Al ejecutar esta sentencia, MySQL queda configurado para que las
órdenes de modificación que se ejecuten a continuación muestren los
datos tal como quedarían pero realmente no se han modificado en la
base de datos. La confirmación definitiva se realiza con COMMIT, si se
cierra el programa sin confirmar la transacción, ésta no se realiza.
Cuando ponemos este estado, dicho tratamiento de transacciones
permanece hasta que lo cambiemos.
SET AUTOCOMMIT=1 El sistema se comporta de forma que una instrucción queda
confirmada sobre la base de datos en el momento que se ejecuta. A
este modo de confirmación automática se le denomina modo
AUTOCOMMIT.
COMMIT Cuando se ejecuta esta sentencia el sistema actualiza la base de datos
con todos los cambios realizados desde la última vez que se ejecutó
esta sentencia.
Entre dos ejecuciones de COMMIT podríamos ver el efecto de los
cambios pero son cambios virtuales, que no se han producido en la
realidad.
ROLLBACK Cuando tenemos el estado AUTOCOMMIT=0, ROLLBACK devuelve la
base de datos al estado en que se encontraba cuando se realizó el
anterior COMMIT o cuando se estableció AUTOCOMMIT a 0.
Cuando se produce un fallo de software o de hardware que produce
una salida del SGBD accidental, al volver a iniciar el sistema, se
produce un ROLLBACK automático y la base de datos vuelve a un
estado anterior.
SAVEPOINT etiqueta Crea un posible punto de retorno o vuelta atrás en un punto
intermedio de la transacción que se haya iniciado. Todos los puntos
de una transacción se borran al ejecutar COMMIT o ROLLBACK.
ROLLBACK TO Deshace la transacción hasta el punto nombrado como ‘etiqueta’
SAVEPOINT etiqueta
START TRANSACTION Cuando MySQL está en modo AUTOCOMMIT permite que se dé inicio
Ó a una transacción, que se confirmará con COMMIT. Si ejecutamos
BEGIN ROLLBACK la base de datos vuelve al estado previo antes de ejecutar
START TRANSACTION.
Se trata de una única transacción que, una vez finalizada el sistema
vuelve al estado AUTOCOMMIT.
Ficha de autorías y licencias
Miniatura Credenciales del recurso
Título: Configuración inicial de AUTOCOMMIT
en MySQL.
Descripción: Captura de pantalla de las
variables y parámetros del servidor en
PhpMyAdmin, remarcando la configuración de
AUTOCOMMIT
Nombre:
GBD05_AUXR12_R01_Autocommit.png
Autoría: Pst
Licencia: GPL
Procedencia: Elaboración propia. Captura de
pantalla del programa PhpMyAdmin.
Título: Ejemplo de uso de SAVEPOINT en
MySQL.
Descripción: Captura de pantalla de la ejecución
de una transacción utilizando la instrucción
SAVEPOINT en MySQL Workbench, remarcando
la configuración de AUTOCOMMIT
Nombre: GBD05_AUXR12_R02_Savepoint.png
Autoría: Pst
Licencia: GPL
Procedencia: Elaboración propia. Captura de
pantalla del programa MySQL Workbench.

También podría gustarte