Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment ajouter une clé étrangère (MySQL)

Vous ne pouvez pas ajouter une colonne NOT NULL à une table qui contient plus de zéro ligne, lorsque la colonne est contrainte à des valeurs qui correspondent à celles de la table parente, et pourtant n'a que des valeurs NULL car il s'agit d'une nouvelle colonne non remplie sans DEFAULT .

La solution consiste à le faire par étapes :ajoutez la colonne, mais ne la déclarez pas NOT NULL et ne déclarez pas encore la clé étrangère.

ALTER TABLE boys
 ADD COLUMN toy_id INT;

Ensuite, remplissez-le avec des données valides qui correspondent à certaines valeurs de votre table de jouets.

UPDATE boys SET toy_id = ...;

Modifiez ensuite la colonne pour qu'elle soit NOT NULL et créez la contrainte :

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