2016-10-26 105 views
0

我有很大的问题。我有2个相关的表格:家长和孩子,这是由小学和foireign密钥相关。在MYSQL表中插入数据错误

主表:

CREATE TABLE `project_main` (
    `ProjectMainId` int(11) NOT NULL, 
    `ProjectTitle` varchar(150) DEFAULT NULL, 
    `ProjectShortTitle` varchar(50) DEFAULT NULL, 
    `ProjectIntroduction` text 

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

子表:

CREATE TABLE `project_detail` (
    `ProjectDetailId` int(11) NOT NULL, 
    `ProjectProtocolNumber` int(11) DEFAULT NULL, 
    `ProjectNumberPatients` int(11) DEFAULT NULL, 
    `ProjectNumberSites` int(11) DEFAULT NULL 
    `ProjectMainId` int(11) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

当我尝试将数据插入父表中,MySQL表示:

1452 - 不能添加或更新子行:外键约束失败(ctb_db.project_main,CONSTRAINT project_main_ibfk_1 外键(ProjectMainId)参考project_detail (ProjectMainId))

这件事情不发生在MSSQL数据库 :(

问候, Vasko

+0

您发布的表创建代码没有定义任何外键,请将该定义添加到您的 – arkascha

+0

ALTER TABLE'project_main' ADD CONSTRAINT'project_main_ibfk_1' FOREIGN KEY('ProjectMainId')REFERENCES'project_detail'('ProjectMainId'), –

+0

请不要在注释中添加其他信息将它们添加到问题本身的问题下面有一个编辑链接_使用它_ – arkascha

回答

0

我试图使用插入数据PHPMyAdmin和SQLYog。我没有使用代码来插入。它正在为我做:)

+0

请不要a你的问题的一部分作为答案。按照问题 –

0

您正尝试在名为ProjectMainId的子项列中插入一个不存在于Project_main表中的值。我的管理员自动创建了一个关系。

0

不,我只是插入数据到Project_main表中。 Project_detail是空的。我将数据插入到Project_main中,并且在autoincrement生成ProjectMainId时,我插入到ProjectDetail中。但是关系并不能让我将数据插入到project_main表中。这是一个问题。

+0

附带此部分请不要将您问题的一部分添加为答案。按照问题 –

0

不要为主表定义外键关系。在子表上定义。这里您将FOREIGN KEY约束定义到主表。将此约束设置为子表。你在这里完成了相反的工作。

+0

@Vaso Zonjic:根据你的解释,这是正确的答案。请问您能否将此标记为正确(如果可以的话)。 –

0

我觉得什么是问题。我已经在SQLYog中创建了关系,并且它倒转了关系:(现在我正在修复PHPMYADMIN设计器中的所有关系,请不要使用SQLYog