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 № 1Je 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 Papers
donc 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