Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como adicionar chave estrangeira (MySQL)


Você não pode adicionar uma coluna NOT NULL a uma tabela que tem mais de zero linhas, quando a coluna está restrita a valores que correspondem aos da tabela pai e ainda tem apenas valores NULL porque é uma coluna nova e não preenchida sem DEFAULT .

A solução é fazer isso em etapas:adicione a coluna, mas não a declare NOT NULL e não declare a chave estrangeira ainda.
ALTER TABLE boys
 ADD COLUMN toy_id INT;

Em seguida, preencha-o com dados válidos que correspondam a alguns valores em sua tabela de brinquedos.
UPDATE boys SET toy_id = ...;

Em seguida, altere a coluna para NOT NULL e crie a restrição:
ALTER TABLE boys MODIFY COLUMN toy_id INT NOT NULL,
 ADD CONSTRAINT toys_toy_id_fk
 FOREIGN KEY(toy_id)
 REFERENCES toys(toy_id);