Mysql
 sql >> Database >  >> RDS >> Mysql

Come aggiungere una chiave esterna (MySQL)

Non puoi aggiungere una colonna NOT NULL a una tabella che ha più di zero righe, quando la colonna è vincolata a valori che corrispondono a quelli nella tabella padre, e tuttavia ha solo valori NULL perché è una nuova colonna non popolata senza DEFAULT .

La soluzione alternativa è farlo in più fasi:aggiungi la colonna, ma non dichiararla NOT NULL e non dichiarare ancora la chiave esterna.

ALTER TABLE boys
 ADD COLUMN toy_id INT;

Quindi compilalo con dati validi che corrispondono ad alcuni valori nella tabella dei giocattoli.

UPDATE boys SET toy_id = ...;

Quindi modifica la colonna in modo che NON sia NULL e crea il vincolo:

ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
 ADD CONSTRAINT toys_toy_id_fk
 FOREIGN KEY(toy_id)
 REFERENCES toys(toy_id);