我有一个包含大约 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/