Instrucciones de manejo de transacciones

  • START TRANSACTION — Empieza una nueva transacción, deja el commit a 0. Si hubiese habido algo de código previo a la transacción, éste se valida y comienza una nueva. Esto permite que se muestren los datos ya validados en el momento de realizar la transacción.

  • COMMIT — Lo usaremos para grabar las operaciones y finalizar las transacciones.

COMMIT

  • ROLLBACK — Deshace las operaciones de la transacción y la finaliza. Ojo, sólo afecta a las instrucciones DML. Cosas como borrar una tabla no se puede deshacer con rollback (se hace un drop table y solucionado).

ROLLBACK

  • SAVEPOINT nombreSavePoint — Crea un punto de guardado dentro de la transacción para tener una referencia en caso de querer deshacer cambios pero no todos.

  • ROLLBACK TO nombreSavePoint — Deshace los cambios hasta el punto de guardado indicado. Al igual que rollback, solo afecta a las instrucciones DML.

ROLLBACK TO SAVEPOINT

  • SET TRANSACTION — Permite cambiar el nivel de aislamiento de la transacción.

  • LOCK TABLES — Permite bloquear explícitamente una o varias tablas. A la vez cierra todas las transacciones abiertas.

Ejemplos

Un ejemplo sencillo:

Ejemplo sencillo de transacción

Y como debería ser bien hecho, con comprobantes de errores y volcando código y texto de error en variables out:

Ejemplo completo con gestión de errores