MySql - 无法设置外键约束

时间:2016-02-15 16:14:29

标签: mysql

我有一个包含表格的数据库: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的新手,无法弄清楚我不能将这些设置为外键的问题是什么?或者我需要在填充表格之前添加这些内容?提前感谢您的任何反馈。

1 个答案:

答案 0 :(得分:2)

我运行您的查询并且没有问题,这个错误的唯一原因,您的表citations列包含的数据与表Papers中的引用无关,因此在运行此脚本之前:

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

您必须确保ID_fromID_to中的数据与ID表中的Papers列无关