Tema SQL
Transacciones (BEGIN, COMMIT, ROLLBACK)
Agrupar cambios atómicos con propiedades ACID y puntos de salvado.
Descripción
BEGIN inicia; COMMIT confirma; ROLLBACK deshace. SAVEPOINT permite revertir parcialmente. Niveles de aislamiento afectan lecturas fantasma y bloqueos (manual §24).
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
BEGIN;
UPDATE cuentas SET saldo = saldo - 100 WHERE id = 1;
UPDATE cuentas SET saldo = saldo + 100 WHERE id = 2;
COMMIT;
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- ACID
- Atomicidad, Consistencia, Aislamiento, Durabilidad.
- SAVEPOINT
- ROLLBACK TO savepoint revierte hasta un punto intermedio.
Ejemplos
Ejemplo 1
BEGIN;
UPDATE productos SET stock = stock - 1 WHERE id = 10;
SAVEPOINT sp1;
UPDATE pedidos SET estado = 'ok' WHERE id = 200;
ROLLBACK TO sp1;
COMMIT;
Ejemplo 2
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.