Sie können einer Tabelle mit mehr als null Zeilen keine NOT NULL-Spalte hinzufügen, wenn die Spalte auf Werte beschränkt ist, die mit denen in der übergeordneten Tabelle übereinstimmen, und dennoch nur NULL-Werte enthält, da es sich um eine neue, nicht gefüllte Spalte ohne DEFAULT handelt .
Die Problemumgehung besteht darin, dies schrittweise zu tun:Fügen Sie die Spalte hinzu, aber deklarieren Sie sie nicht als NOT NULL, und deklarieren Sie den Fremdschlüssel noch nicht.
ALTER TABLE boys
ADD COLUMN toy_id INT;
Füllen Sie es dann mit gültigen Daten, die mit einigen Werten in Ihrer Spielzeugtabelle übereinstimmen.
UPDATE boys SET toy_id = ...;
Ändern Sie dann die Spalte in NOT NULL und erstellen Sie die Einschränkung:
ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);