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 № 1Uruchomię 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ół