AD

¿Ya dominas lo básico? Un curso estructurado de SQL es la vía rápida para dar el salto.

Ver cursos de SQL en Udemy

Enlace de afiliado. No te cuesta nada extra.

🗄️Lecciones de SQL
Lección 49 / 50

Garantizar la integridad con FOREIGN KEY

En esta lección harás que la base de datos impida guardar referencias a registros que no existen.

FOREIGN KEY(columna) REFERENCES otra_tabla(columna) declara que ese valor debe existir en la otra tabla. Cualquier inserción que apunte a un identificador inexistente será rechazada. En SQLite hay que activar la comprobación con PRAGMA foreign_keys = ON;, porque por compatibilidad viene desactivada.

El código de ejemplo relaciona préstamos con libros. Prueba a insertar un préstamo con book_id igual a 99 y verás cómo la base de datos lo rechaza.

Ese PRAGMA es la sorpresa característica de SQLite: sin él, las claves foráneas se declaran pero no se comprueban, y la gente cree tener integridad cuando no la tiene. Además hay que decidir qué pasa al borrar el registro referenciado, con ON DELETE CASCADE (borra también los hijos) o ON DELETE RESTRICT (impide el borrado).

Los datos huérfanos — un pedido cuyo cliente ya no existe — son de los problemas más molestos de arreglar, porque se descubren tarde y no hay forma de reconstruir la información perdida. Las claves foráneas los hacen imposibles desde el primer día.

SQL
SALIDA

💡 El motor de SQL puede tardar unos segundos en cargarse la primera vez que ejecutas código.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)