Transacciones · control de cambios

ROLLBACK

ROLLBACK cancela los cambios pendientes de la transacción actual para devolver la base de datos al estado que tenía al iniciar esa transacción.

Lectura: 5–7 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué hace ROLLBACK

ROLLBACK termina una transacción sin guardar sus cambios. Es la salida adecuada cuando una comprobación falla, una operación afecta a más filas de las previstas o decides no continuar.

Piensa en la transacción como una zona de trabajo provisional: puedes ejecutar varias sentencias, revisar el resultado y elegir entre COMMIT para conservarlo o ROLLBACK para descartarlo.

El flujo seguro

  1. Inicia la transacción con BEGIN o START TRANSACTION.
  2. Ejecuta el cambio.
  3. Consulta las filas afectadas y comprueba que el resultado es correcto.
  4. Termina con COMMIT o ROLLBACK.

ROLLBACK no es una copia de seguridad. Solo puede cancelar cambios que todavía pertenecen a una transacción abierta. Después de confirmar con COMMIT, necesitas otros mecanismos de recuperación.

Ejemplo guiado

El teclado tiene un stock inicial de 7 unidades. La siguiente transacción reduce temporalmente el stock en 2, comprueba el valor y después deshace el cambio:

SQL
BEGIN;

UPDATE productos
SET stock = stock - 2
WHERE id = 2;

SELECT stock AS stock_durante_transaccion
FROM productos
WHERE id = 2;

ROLLBACK;

SELECT stock AS stock_final
FROM productos
WHERE id = 2;
Comprobación final
stock_final
7

Dentro de la transacción el stock llega a 5. Tras ROLLBACK, la consulta final vuelve a mostrar 7 porque la modificación no se confirmó.

Error frecuente

Esperar que ROLLBACK deshaga un COMMIT

COMMIT cierra la transacción y confirma sus cambios. Después de COMMIT, un ROLLBACK no puede revertir esos cambios ya confirmados; si no existe una transacción activa, el comportamiento o el mensaje concreto depende del motor y de la herramienta. Antes de confirmar, revisa el número de filas y algunos valores representativos.

Comprueba lo aprendido

Intermedia · transacción segura

Prueba un cambio sin conservarlo

Escribe una transacción que ponga a 0 el stock del producto con id = 5, consulte el valor temporal, ejecute ROLLBACK y devuelva el stock final con el alias stock_final.

Compatibilidad y límites

ROLLBACK forma parte del control transaccional habitual, pero el inicio de la transacción y el modo de autocommit varían entre herramientas y motores. Algunas operaciones de definición de datos también tienen reglas especiales. Practica primero en una base de prueba.

Para deshacer solo una parte del trabajo sin abandonar toda la transacción, busca los savepoints y ROLLBACK TO SAVEPOINT.

Qué debes recordar

  • ROLLBACK cancela cambios pendientes, no cambios ya confirmados.
  • Comprueba el resultado antes de elegir entre COMMIT y ROLLBACK.
  • Una condición precisa reduce el riesgo, incluso dentro de una transacción.
  • Los savepoints permiten retroceder a un punto intermedio.

Conceptos relacionados

Fuentes técnicas

La explicación se ha contrastado con documentación oficial: