/ / MySql - Nie można ustawić ograniczenia klucza obcego - mysql

MySql - Nie można ustawić ograniczenia klucza obcego - mysql

Mam bazę danych z tabelami: dokumenty i cytaty. Stworzyłem tabelę dokumentów jako:

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

A tabela cytowań:

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

Zapełniłem już te tabele. Ale obie kolumny w mojej tabeli cytatów powinny być kluczami obcymi do identyfikatora tabeli dokumentów. Tak więc wstępnie sformułowałem to zapytanie, aby dodać obie te kolumny jako klucze obce identyfikatora w tabeli dokumentów:

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

Ale pojawia się błąd:

"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`))")

Jestem bardzo nowy w sql i nie mogę dowiedzieć się, coproblem polega na tym, że nie mogę ustawić ich jako kluczy obcych? Czy jest to przypadek, że muszę dodać je, zanim zapełniłem tabele? Z góry dziękuję za wszelkie opinie.

Odpowiedzi:

2 dla odpowiedzi № 1

Uruchomię zapytanie i nie ma problemu, jedynym powodem tego błędu jest Twoja tabela citations kolumny zawiera dane nie związane z odniesieniem w tabeli Papers, więc przed uruchomieniem tego skryptu:

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

musisz mieć pewność, że nie ma danych ID_from lub ID_to nie dotyczy ID kolumna w Papers stół