外键和MySQL工作台中导入数据的问题



我到处都找过,看到了与这个问题有关的大多数线程,但仍然无法让它为我工作。

这是我使用Workbench制作的。这是一个房地产数据库:

DROP DATABASE IF EXISTS projet3;
CREATE DATABASE projet3;
USE projet3;
CREATE TABLE Localite (
Localite_ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
Commune VARCHAR(50) NOT NULL,
Departement SMALLINT NOT NULL,
PRIMARY KEY (Localite_ID)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE Bien (
Bien_ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
SurCar1 DOUBLE NOT NULL,
TypeLoc VARCHAR(15) NOT NULL,
NoPP SMALLINT NOT NULL,
Localite_ID SMALLINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (Bien_ID),
CONSTRAINT FK_Localite FOREIGN KEY (localite_ID) REFERENCES localite (Localite_ID) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE Mutation (
Mutation_ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
DateMutation DATETIME NOT NULL,
ValeurFonciere INT NOT NULL,
Bien_ID SMALLINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (Mutation_ID),
CONSTRAINT FK_Bien FOREIGN KEY (Bien_ID) REFERENCES bien (Bien_ID) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS Adresse;
CREATE TABLE Adresse (
Adresse_ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
NoVoie SMALLINT NOT NULL,
TypeVoie VARCHAR(10) NOT NULL,
NomVoie VARCHAR(50) NOT NULL,
CodePostal INT NOT NULL,
Bien_ID SMALLINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (Adresse_ID),
CONSTRAINT FK_Bien FOREIGN KEY (Bien_ID) REFERENCES bien (Bien_ID) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;`

相应的模型如下所示:EER模型我不得不将Bien和Adresse之间的关系改为1对1,然后我进行了前瞻性设计。我知道我可以将Adresse属性集成到Bien表中,但为了完成必须执行的任务,我将它们分开。

然而,当我尝试用外键将数据导入任何表时,工作台拒绝向我提供以下信息:无法添加或更新子行

我也试过简单地创建表,导入数据,然后创建外键,但我得到了相同的结果。

任何帮助都将不胜感激!

您的问题是

你有两次

CONSTRAINT FK_Bien FOREIGN KEY (Bien_ID) REFERENCES bien (Bien_ID) ON DELETE RESTRICT ON UPDATE CASCADE

由于每个外键都需要其唯一名称

因此表中的第二个Adresse重命名为FK_Bien1

创建表后暂时禁用外键检查;在使用以下命令加载数据之前:

FOREIGN_KEY_CHECKS = 0

将数据加载/导入表后,可以通过将其设置回1来启用外键检查。这个参数的一些用例已经在TablePlus的博客上有很好的记录。

最新更新