M09L17Semana 5~5 h
L17 — Transacciones ACID
~5.0 h · Semana 5
Crear cita sin auditoría (o al revés) es un bug de integridad. ACID lo evita.
Objetivo
Entregar sql/transaccion-cita.sql que inserta cita + cita_auditoria atómicamente.
Pasos
1. Lectura (45 min)
Propiedades ACID en Elmasri. Traduce cada letra con un ejemplo de citas.
2. Asegura tabla auditoría (30 min)
Aplica migrations/002_auditoria_y_indices.sql si no lo hiciste.
3. Script feliz (75 min)
BEGIN;
WITH nueva AS (
INSERT INTO citas (cliente_id, servicio_id, inicia_en, termina_en, estado)
VALUES (…, …, now() + interval '3 days', now() + interval '3 days 30 min', 'programada')
RETURNING id
)
INSERT INTO cita_auditoria (cita_id, accion, detalle)
SELECT id, 'crear', jsonb_build_object('via', 'm09-l17') FROM nueva;
COMMIT;
4. Script de fallo (45 min)
Fuerza un error (FK inválida) dentro de BEGIN y verifica que no quedó basura (ROLLBACK implícito/ explícito).
5. Commit (15 min)
git add projects/m09-bases-datos/sql/transaccion-cita.sql
git commit -m "feat(m09): transaccion cita + auditoria"
Lectura de esta lección
| Fuente | Qué leer | Enlace |
|---|---|---|
| Fundamentos de BD — Elmasri & Navathe (ed. ES) | Elmasri: transacciones ACID; PG BEGIN/COMMIT/ROLLBACK | Tutorial PostgreSQL |
| Catálogo | Entrada de esta materia | Bibliografía · M09 |
Hecho cuando
Marca la lección solo si:
- Script con
BEGINque inserta cita + fila de auditoría yCOMMIT. - Demuestras un
ROLLBACK(error forzado) dejando la BD consistente. - Commit del SQL .
Errores comunes
- Dos statements sueltos sin transacción cuando deben ser atómicos.
- Auditar en la app “más tarde” y perder el enlace.
- Dejar transacciones abiertas en
psql.