Tema SQL
FOREIGN KEY (clave foránea)
Relacionar columnas con la clave primaria (o única) de otra tabla.
Descripción
Garantiza integridad referencial: no puedes insertar huérfanos salvo NULL; ON DELETE/ON UPDATE define acciones en cascada o restricción (manual §6.4).
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
FOREIGN KEY (col_local)
REFERENCES tabla_ref (col_ref)
[ ON DELETE CASCADE | SET NULL | ... ]
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- REFERENCES
- La columna referenciada debe ser PK o UNIQUE.
- Acciones
- ON DELETE CASCADE propaga borrados; revisa impacto en datos.
Ejemplos
Ejemplo 1
CREATE TABLE pedidos (
id INT PRIMARY KEY,
cliente_id INT NOT NULL,
FOREIGN KEY (cliente_id) REFERENCES clientes(id)
ON DELETE RESTRICT
);
Ejemplo 2
ALTER TABLE hijo ADD CONSTRAINT fk_padre FOREIGN KEY (p_id) REFERENCES padre(id);
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.