/ / MySql - Impossible de définir la contrainte de clé étrangère - mysql

MySql - Impossible de définir la contrainte de clé étrangère - mysql

J'ai une base de données avec des tables: Papers and Citations. J'ai créé la table des papiers comme suit:

CREATE TABLE Papers (
ID       int NOT NULL,
TITLE    varchar(255) NOT NULL,
YEAR     int,
Publication_Venue  varchar(255) NOT NULL,
PRIMARY KEY (ID))

Et la table de citations:

CREATE TABLE Citations (
ID_from     int NOT NULL,
ID_to       int NOT NULL,
PRIMARY KEY (ID_from, ID_to))

J'ai déjà rempli ces tables. Mais les deux colonnes de ma table de citations doivent être des clés étrangères à l'ID de la table papers. J'ai donc préformé cette requête pour ajouter ces deux colonnes sont des clés étrangères d'ID dans la table papers:

ALTER TABLE citations
ADD FOREIGN KEY (ID_from) REFERENCES papers(ID),
ADD FOREIGN KEY (ID_to) REFERENCES papers(ID)

Mais je reçois l'erreur:

"Cannot add or update a child row: a foreign key constraint fails (`literature`.`#sql-500_4c`, CONSTRAINT `#sql-500_4c_ibfk_2` FOREIGN KEY (`ID_to`) REFERENCES `papers` (`ID`))")

Je suis très nouveau sur SQL et ne peux pas comprendre ce que leLe problème est que je ne peux pas les définir comme clés étrangères? Ou est-ce que je devais les ajouter avant de remplir les tables? Merci d'avance pour vos commentaires.

Réponses:

2 pour la réponse № 1

Je lance votre requête et il n'y a pas de problème, la seule raison de cette erreur, votre table citations colonnes contient des données non liées à sa référence dans la table Papersdonc avant d’exécuter ce script:

ALTER TABLE citations
ADD FOREIGN KEY (ID_from) REFERENCES papers(ID),
ADD FOREIGN KEY (ID_to) REFERENCES papers(ID)

vous devez être sûr qu'il n'y a pas de données dans ID_from ou ID_to n'est pas lié à ID colonne dans Papers table