列が親テーブルの値と一致する値に制約されているが、デフォルトのない新しい未入力の列であるためにNULL値しかない場合、0行を超えるテーブルにNOTNULL列を追加することはできません。 。
回避策は段階的に行うことです。列を追加しますが、NOT NULLを宣言せず、外部キーをまだ宣言しないでください。
ALTER TABLE boys
ADD COLUMN toy_id INT;
次に、おもちゃのテーブルのいくつかの値と一致する有効なデータを入力します。
UPDATE boys SET toy_id = ...;
次に、列をNOT NULLに変更し、制約を作成します。
ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);