Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So fügen Sie Fremdschlüssel hinzu (MySQL)

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);