Sloupec NOT NULL nemůžete přidat do tabulky, která má více než nula řádků, když je sloupec omezen na hodnoty, které odpovídají hodnotám v nadřazené tabulce, a přesto má pouze hodnoty NULL, protože se jedná o nový, nevyplněný sloupec bez DEFAULT. .
Řešením je udělat to ve fázích:přidejte sloupec, ale nedeklarujte jej NOT NULL a zatím nedeklarujte cizí klíč.
ALTER TABLE boys
ADD COLUMN toy_id INT;
Poté jej naplňte platnými údaji, které odpovídají některým hodnotám ve vaší tabulce hraček.
UPDATE boys SET toy_id = ...;
Potom změňte sloupec tak, aby byl NOT NULL, a vytvořte omezení:
ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);