Vous ne pouvez pas ajouter une colonne NOT NULL à une table qui contient plus de zéro ligne, lorsque la colonne est contrainte à des valeurs qui correspondent à celles de la table parente, et pourtant n'a que des valeurs NULL car il s'agit d'une nouvelle colonne non remplie sans DEFAULT .
La solution consiste à le faire par étapes :ajoutez la colonne, mais ne la déclarez pas NOT NULL et ne déclarez pas encore la clé étrangère.
ALTER TABLE boys
ADD COLUMN toy_id INT;
Ensuite, remplissez-le avec des données valides qui correspondent à certaines valeurs de votre table de jouets.
UPDATE boys SET toy_id = ...;
Modifiez ensuite la colonne pour qu'elle soit NOT NULL et créez la contrainte :
ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);