SQL 可以单独插入但不能加载为带外键的文件

SQL can insert separately but cannot load as file with foreign key

我是数据库的新手,正在学习教程并进行实验。如果这个问题被证明是愚蠢的,我深表歉意。

我设置了一个 table 这样的:

CREATE TABLE if not exists SAMPLE(
    chara   varchar(15) not null,
    Num     char(9),
    secNum char(9),
    primary key (Num),
    foreign key (secNum) references sample(Num)
) engine=innodb;

如果我一个一个插入条目:

insert into SAMPLE(chara, Num) values ("A", "111");
insert into SAMPLE(chara, Num, secNum) values ("B", "222", "111");
insert into SAMPLE(chara, Num) values ("C", "333");

它工作正常。但是,如果我使用 load data infile ".../SAMPLE.txt" into table SAMPLE;:

加载以下数据
A   111 \N
B   222 111
C   333 \N

我收到一条错误消息:

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`company`.`sample`, CONSTRAINT `sample_ibfk_1` FOREIGN KEY (`secNum`) REFERENCES `sample` (`Num`))  0.000 sec

我猜想这与破坏参照完整性有关,但我不知道是什么。而且我也不知道为什么它适用于 serval 插入但不适用于负载。谁能帮助我了解出了什么问题以及如何摆脱它?谢谢。

单独逐行插入时,第二次插入已经看到111行,不违反FK 但是当您加载文件时,它会尝试在一批(事务)中插入所有行,因此第 111 行还不存在。