MySQL:如果存在外键则插入

标签 mysql insert foreign-keys

我有一个包含大约 2000 行的 Excel 工作表,我想将其插入到我的数据库中。

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

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

例子:

INSERT INTO test (id, value) VALUES (10, 20);  
INSERT INTO test (id, value) VALUES (20, 20);

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

有什么方法可以避免第一个查询出现错误,而我的其他查询仍将被执行?

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

最佳答案

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

INSERT INTO test (id, value) 
SELECT foobar.id, 20
FROM foobar WHERE id = 10;

关于MySQL:如果存在外键则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3117734/

相关文章:

mysql - 一些使用日期格式的选择查询

适用于 Visual Studio 2015 的 MySQL

sql - 为从选择中获取的每一行执行插入?

mysql - CakePHP 关联困惑

mysql - 在将某些内容插入到外键引用的子表之前查找主键的值

mysql - 具有外部约束的sql查询

mysql - 将字母 A 连接到特定列的单元格,条件是同一列的单元格不包含 B

MySQL - 与日期相关的值之间的差异

插入触发器SET之前的Mysql失败

mysql - 在键上插入多个更新这些多个