MySQL:如果存在外键,则插入

use*_*700 7 mysql foreign-keys insert

我有一个Excel工作表,大约有2.000行,我想插入到我的数据库中.

问题是我要插入2.000行的表有一个引用另一个表中的外键的列.不幸的是,很多查询都失败了,因为提供的外键值不存在.

我知道我可以忽略外键检查,但这不是我想要的.我不想忽略外键检查,我只是想要不执行错误的查询.

例:

INSERT INTO test (id, value) VALUES (10, 20);  
INSERT INTO test (id, value) VALUES (20, 20);
Run Code Online (Sandbox Code Playgroud)

第一个查询失败,因为TEST.id引用foobar.id和没有foobar.id = 10.但是,第二个查询将起作用,因为foobar.id = 20存在,但第二个查询将不会执行,因为第一个查询已经失败.

有没有办法在第一个查询中没有出错,我的其他查询仍然会被执行?

我可以写一个PHP脚本,但我更喜欢这里的MySQL解决方案.

Row*_*haw 6

您可以更改为插入选择的结果,如下所示:

INSERT INTO test (id, value) 
SELECT foobar.id, 20
FROM foobar WHERE id = 10;
Run Code Online (Sandbox Code Playgroud)