我有一个包含表格的数据库:Papers和Citations。我创建了论文表如下:
CREATE TABLE Papers (
ID int NOT NULL,
TITLE varchar(255) NOT NULL,
YEAR int,
Publication_Venue varchar(255) NOT NULL,
PRIMARY KEY (ID))
引用表:
CREATE TABLE Citations (
ID_from int NOT NULL,
ID_to int NOT NULL,
PRIMARY KEY (ID_from, ID_to))
我已经填充了这些表格。 但我的引用表中的两列都应该是纸张表ID的外键。所以我执行此查询以添加这两个列是纸张表中ID的外键:
ALTER TABLE citations
ADD FOREIGN KEY (ID_from) REFERENCES papers(ID),
ADD FOREIGN KEY (ID_to) REFERENCES papers(ID)
但我收到错误:
'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`))')
我是sql的新手,无法弄清楚我不能将这些设置为外键的问题是什么?或者我需要在填充表格之前添加这些内容?提前感谢您的任何反馈。
答案 0 :(得分:2)
我运行您的查询并且没有问题,这个错误的唯一原因,您的表citations
列包含的数据与表Papers
中的引用无关,因此在运行此脚本之前:
ALTER TABLE citations
ADD FOREIGN KEY (ID_from) REFERENCES papers(ID),
ADD FOREIGN KEY (ID_to) REFERENCES papers(ID)
您必须确保ID_from
或ID_to
中的数据与ID
表中的Papers
列无关