如何在父表(Tb2)的子表(Tb1)中插入数据,该表也是MySQL中子(Tb1)的父(Tb2)?

时间:2016-04-30 15:07:57

标签: mysql innodb

我是MySQL的新手,几天前刚开始使用它。对于我的作业,为了简单起见,MySQL将其默认设置为MyISAM,并让我创建了一个用于MySQL练习的医院示例数据库。

但是出于我自己的个人目的和InnoDB与MyISAM相比实际强制执行FK的一些研究,我将默认设置切换为InnoDB,并尝试重新创建我用MyISAM完成的相同数据库。

然后问题就像卡车一样打击我,我的“病房”表如下:

create table Ward
(Code varchar(1) primary key not null,
Name varchar(15) not null,
Consultant varchar(3) not null);

alter table ward
add foreign key (Consultant)
references Doctor(ID);

我的医生桌是这样的:

create table Doctor
(ID varchar(3) primary key not null,
Name varchar(15) not null,
Ward varchar(1) not null);

alter table doctor
add foreign key (Ward)
references Ward(Code);

之后,我尝试在其中一个表中输入数据,当我尝试将数据分别输入“病房”表和“医生”表时,给出了以下错误:

  

错误1452(23000):无法添加或更新子行:外键   约束失败(hospitalward,CONSTRAINT ward_ibfk_1 FOREIGN   KEY(Consultant)参考doctorID))

     

错误1452(23000):无法添加或更新子行:外键   约束失败(hospitaldoctor,CONSTRAINT doctor_ibfk_1   外键(Ward)参考wardCode))

如何在任何一个表格中输入数据?

谢谢,抱歉这个麻烦!

1 个答案:

答案 0 :(得分:0)

这可能是错误的'让FK像这样来回走动。

您可以在创建表时禁用外键。但是你可能会遇到插入问题 - 一个插入会发现FK违规,因为你还没有完成另一个。

如果您的FK中没有循环,那么只需在右侧'中创建表格即可。顺序。