- 💰 Ejemplo: transferencia de dinero
- Solución: usar una transacción
- Revertir manualmente: ROLLBACK
- ¿Qué hace que una transacción sea confiable?
- ⚠️ Por qué importan las transacciones
A veces una sola consulta SQL no basta 😅 Por ejemplo, imagina que queremos transferir dinero de una cuenta a otra. No podemos hacerlo con una sola instrucción: hay que restar de una cuenta y sumar en otra.
Pero ¿qué pasa si algo falla en medio del proceso? Ahí entran las transacciones.
💰 Ejemplo: transferencia de dinero
Tenemos una tabla accounts con dos usuarios:
| id | user_id | amount |
|---|---|---|
| 1 | 10 | 100 |
| 2 | 30 | 100 |
Queremos pasar 50 del usuario 10 al 30. Podríamos hacerlo con tres pasos:
SELECT amount FROM accounts WHERE user_id = 10;
UPDATE accounts SET amount = amount - 50 WHERE user_id = 10;
UPDATE accounts SET amount = amount + 50 WHERE user_id = 30;
💬 El problema: si el sistema se apaga entre la segunda y la tercera consulta, el dinero se resta pero nunca llega 😬
| id | user_id | amount |
|---|---|---|
| 1 | 10 | 100 |
| 2 | 30 | 100 |
Ver en DB Fiddle
Solución: usar una transacción
Así se ve en SQL:
BEGIN;
SELECT amount FROM accounts WHERE user_id = 10;
UPDATE accounts SET amount = amount - 50 WHERE user_id = 10;
UPDATE accounts SET amount = amount + 50 WHERE user_id = 30;
COMMIT;
💬 BEGIN inicia la transacción, y COMMIT la confirma si todo salió bien.
Si algo falla entre medio, la base de datos revierte automáticamente los cambios. Nada queda a medias 💪
Ver en DB Fiddle
Revertir manualmente: ROLLBACK
Si por alguna razón quieres cancelar los cambios tú mismo:
BEGIN;
UPDATE accounts SET amount = amount - 50 WHERE user_id = 10;
ROLLBACK;
💬 ROLLBACK deshace todo lo hecho desde el BEGIN. Es como decir: “olvida lo que pasó, no guardes nada”.
Ver en DB Fiddle
¿Qué hace que una transacción sea confiable?
Un buen sistema transaccional sigue las reglas ACID: cuatro principios que garantizan que los datos sean seguros y consistentes.
| Letra | Significa | En palabras simples |
|---|---|---|
| A — Atomicity | Atomicidad | Todo o nada. Si algo falla, nada se guarda. |
| C — Consistency | Consistencia | Al terminar, los datos siempre están en un estado válido. |
| I — Isolation | Aislamiento | Las transacciones paralelas no se mezclan entre sí. |
| D — Durability | Durabilidad | Una vez confirmada, la transacción no se pierde (ni con un apagón). |
💡 Estas reglas hacen que el sistema se comporte de manera predecible, incluso ante errores.
BEGIN— Inicia el bloque de transacciones.- Se ejecutan las consultas.
- Si todo sale bien →
COMMIT. - Si algo falla →
ROLLBACK(se deshacen todos los cambios).
⚠️ Por qué importan las transacciones
Sin transacciones, las operaciones pueden quedar a medias:
- dinero que desaparece,
- pedidos que se crean sin productos,
- usuarios registrados sin contraseña.
Con transacciones, el sistema siempre elige entre dos estados:
✅ todo correcto — ❌ nada guardado.
Nada “a medio camino”.
Resumen
- Usa
BEGINyCOMMITpara agrupar consultas en una transacción. - Si algo sale mal,
ROLLBACKrevierte todos los cambios. - Las bases de datos confiables cumplen las reglas ACID: atomicidad, consistencia, aislamiento y durabilidad.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.