sql >> Base de Datos >  >> RDS >> Mysql

Cómo agregar una clave externa (MySQL)

No puede agregar una columna NOT NULL a una tabla que tiene más de cero filas, cuando la columna está restringida a valores que coinciden con los de la tabla principal y, sin embargo, solo tiene valores NULL porque es una columna nueva, despoblada y sin DEFAULT .

La solución es hacerlo por etapas:agregue la columna, pero no la declare NOT NULL, y no declare la clave externa todavía.

ALTER TABLE boys
 ADD COLUMN toy_id INT;

Luego complételo con datos válidos que coincidan con algunos valores en su tabla de juguetes.

UPDATE boys SET toy_id = ...;

Luego modifique la columna para que NO sea NULL y cree la restricción:

ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
 ADD CONSTRAINT toys_toy_id_fk
 FOREIGN KEY(toy_id)
 REFERENCES toys(toy_id);