gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:04:20 25 4
gpt4 key购买 nike

我对 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);

之后,我尝试在其中一个表中输入数据,当我尝试分别向“ward”表和“doctor”表中输入数据时,出现以下错误:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (hospital.ward, CONSTRAINT ward_ibfk_1 FOREIGN KEY (Consultant) REFERENCES doctor (ID))

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (hospital.doctor, CONSTRAINT doctor_ibfk_1 FOREIGN KEY (Ward) REFERENCES ward (Code))

如何将数据输入到任一表中?

非常感谢,给您带来的麻烦深表歉意!

最佳答案

让 FK 像这样来来回回可能是“错误的”。

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

如果您的 FK 中没有循环,则只需按“正确”的顺序创建表即可。

关于mysql - 如何在MySQL中的父表(Tb2)的子表(Tb1)中插入数据,该父表(Tb2)也是子表(Tb1)的父表(Tb2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36956522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com