Du kan inte lägga till en NOT NULL-kolumn till en tabell som har fler än noll rader, när kolumnen är begränsad till värden som matchar de i den överordnade tabellen, och ändå bara har NULL-värden eftersom det är en ny, obefolkad kolumn utan DEFAULT .
Lösningen är att göra det stegvis:lägg till kolumnen, men deklarera inte att den INTE är NULL, och deklarera inte den främmande nyckeln ännu.
ALTER TABLE boys
ADD COLUMN toy_id INT;
Fyll sedan i den med giltiga data som matchar vissa värden i din leksakstabell.
UPDATE boys SET toy_id = ...;
Ändra sedan kolumnen till att vara NOT NULL och skapa begränsningen:
ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);