Puedes ejecutar cualquier bloque de transacciones en nuestra consola interactiva: Abrir consola SQL →
Transacciones en SQL: control total sobre operaciones críticas
Las transacciones permiten agrupar operaciones para garantizar integridad, consistencia y seguridad. Son esenciales en sistemas bancarios, e‑commerce, contabilidad y cualquier aplicación crítica.
Tabla de contenidos
1. ¿Qué es una transacción?
Una transacción es un conjunto de operaciones que se ejecutan como una unidad indivisible.
BEGIN;
UPDATE cuentas SET saldo = saldo - 100 WHERE id = 1;
UPDATE cuentas SET saldo = saldo + 100 WHERE id = 2;
COMMIT;
2. Propiedades ACID
- Atomicidad — todo o nada.
- Consistencia — el estado final debe ser válido.
- Aislamiento — las transacciones no se afectan entre sí.
- Durabilidad — los cambios persisten incluso ante fallos.
3. BEGIN, COMMIT y ROLLBACK
BEGIN; -- Inicia la transacción
COMMIT; -- Guarda los cambios
ROLLBACK; -- Revierte todo
4. SAVEPOINT
BEGIN;
UPDATE cuentas SET saldo = saldo - 100 WHERE id = 1;
SAVEPOINT mitad;
UPDATE cuentas SET saldo = saldo + 100 WHERE id = 2;
ROLLBACK TO mitad;
COMMIT;
5. Ejemplos prácticos
-- Transferencia bancaria
BEGIN;
UPDATE cuentas SET saldo = saldo - 500 WHERE id = 10;
UPDATE cuentas SET saldo = saldo + 500 WHERE id = 20;
COMMIT;
-- Cancelación de compra
BEGIN;
UPDATE stock SET cantidad = cantidad + 1 WHERE producto_id = 5;
DELETE FROM pedidos WHERE id = 100;
ROLLBACK;
6. Ejercicios para practicar
- Crea una transacción con COMMIT.
- Crea una transacción con ROLLBACK.
- Usa SAVEPOINT para revertir parcialmente.
- Simula una transferencia bancaria.
- Explica las propiedades ACID.
BEGIN;
UPDATE cuentas SET saldo = saldo + 100 WHERE id = 1;
COMMIT;
BEGIN;
UPDATE cuentas SET saldo = saldo - 50 WHERE id = 2;
ROLLBACK;
BEGIN;
SAVEPOINT punto;
UPDATE cuentas SET saldo = saldo - 20 WHERE id = 3;
ROLLBACK TO punto;
COMMIT;
BEGIN;
UPDATE cuentas SET saldo = saldo - 200 WHERE id = 4;
UPDATE cuentas SET saldo = saldo + 200 WHERE id = 5;
COMMIT;
-- ACID garantiza integridad, aislamiento y durabilidad.
7. Mini‑proyecto: Sistema de pagos seguro
BEGIN;
UPDATE usuarios SET saldo = saldo - 100 WHERE id = 1;
UPDATE vendedores SET saldo = saldo + 100 WHERE id = 50;
COMMIT;
8. Errores comunes
- No usar transacciones en operaciones críticas.
- Olvidar COMMIT.
- Abusar de SAVEPOINT.
- Confundir ROLLBACK con ROLLBACK TO.
9. Preguntas frecuentes
¿Las transacciones afectan el rendimiento?
Sí, pero garantizan integridad.
¿Todas las bases soportan transacciones?
Sí, todas las modernas.