...

Transacciones en SQL: cómo mantener tus datos bajo control (BEGIN, COMMIT y ROLLBACK)

En el trabajo con bases de datos, no todo es consultar y leer información.
Cuando llega el momento de insertar, actualizar o eliminar datos, la precisión y el control se vuelven esenciales.

Aquí es donde entran las transacciones SQL, una de las herramientas más poderosas — y a veces menos comprendidas — para garantizar que los cambios en tus datos sean seguros, coherentes y recuperables.

En este artículo aprenderás cómo funcionan, qué significa el modelo ACID, y cómo aplicar BEGIN, COMMIT y ROLLBACK en PostgreSQL (con notas para SQL Server).
Todos los ejemplos pueden ejecutarse directamente en 👉 db-fiddle.com.


1. ¿Qué es una transacción?

Una transacción es un conjunto de operaciones SQL que se ejecutan como una unidad lógica de trabajo.
Esto significa que o se ejecutan todas correctamente, o ninguna de ellas se aplica.

Ejemplo:
Si estás transfiriendo dinero entre cuentas, no puedes permitir que una se debite sin que la otra se acredite.
Ambas operaciones deben ser atómicas.


2. Las propiedades ACID

Las transacciones se rigen por cuatro principios clave:

PropiedadSignificado
AtomicidadTodos los cambios ocurren o ninguno.
ConsistenciaLa base de datos pasa de un estado válido a otro.
AislamientoCada transacción es independiente de las demás.
DurabilidadUna vez confirmada, la transacción se guarda permanentemente.

3. Estructura básica de una transacción

BEGIN;                     -- Inicia la transacción
UPDATE empleados
SET salario = salario * 1.10
WHERE id_departamento = 4;

COMMIT;                    -- Confirma los cambios

➡️ Si todo se ejecuta correctamente, los cambios se confirman con COMMIT.

Pero, ¿qué pasa si algo falla?

BEGIN;
UPDATE empleados
SET salario = salario * 1.10
WHERE id_departamento = 4;

-- Simulamos un error
UPDATE empleados SET salario = 'error';

ROLLBACK;   -- Revierte toda la transacción

En resumen:

  • BEGIN inicia la transacción.
  • COMMIT guarda los cambios.
  • ROLLBACK revierte los cambios si hay un error.

4. Control de errores con TRY/CATCH (en SQL Server)

PostgreSQL no tiene un bloque TRY...CATCH dentro del SQL estándar, pero en SQL Server sí es posible manejar errores explícitamente:

BEGIN TRY
    BEGIN TRANSACTION;
    
    UPDATE empleados
    SET salario = salario * 1.10
    WHERE id_departamento = 4;
    
    COMMIT TRANSACTION;
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION;
    PRINT 'Error detectado. Transacción revertida.';
END CATCH;

En PostgreSQL, el control de errores se realiza generalmente desde el lenguaje cliente (por ejemplo, Python, C#, etc.), o mediante bloques anónimos DO $$ BEGIN ... EXCEPTION WHEN ... END $$;


5. Transacciones con múltiples operaciones

Imagina que deseas mover empleados de un departamento a otro y actualizar su salario.

BEGIN;

UPDATE empleados
SET id_departamento = 3
WHERE id_departamento = 2;

UPDATE empleados
SET salario = salario + 5000
WHERE id_departamento = 3;

COMMIT;

✅ Si alguna de las dos operaciones falla, puedes ejecutar ROLLBACK; para revertir todo y mantener la coherencia de datos.


6. Diferencias entre motores SQL

MotorIniciar transacciónConfirmarRevertirManejo de errores
PostgreSQLBEGINCOMMITROLLBACKBloques EXCEPTION o lenguaje cliente
SQL ServerBEGIN TRANSACTIONCOMMIT TRANSACTIONROLLBACK TRANSACTIONTRY...CATCH nativo
MySQLSTART TRANSACTIONCOMMITROLLBACKDepende del motor InnoDB
SQLiteBEGIN TRANSACTIONCOMMITROLLBACKSoporte limitado a nivel básico

7. Buenas prácticas

✅ Siempre agrupa operaciones relacionadas dentro de una transacción.
✅ Usa ROLLBACK si detectas errores o inconsistencias.
✅ No dejes transacciones abiertas: bloquean recursos.
✅ Evita confirmar (COMMIT) a medias; espera a que todo esté validado.
✅ Documenta claramente qué consultas modifican datos.


8. Conclusión

Las transacciones son tu red de seguridad en SQL.
Dominar BEGIN, COMMIT y ROLLBACK te permitirá trabajar con confianza, incluso en bases de datos críticas, evitando pérdidas o corrupciones de datos.

Y si aprendes a integrarlas con manejo de errores, tus consultas pasarán de ser funcionales a profesionalmente robustas.

Deja un comentario

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.