代码之家  ›  专栏  ›  技术社区  ›  user375700

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

  •  7
  • user375700  · 技术社区  · 16 年前

    我有一个Excel表格,里面有大约2000行,我想把它插入我的数据库。

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

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

    例子:

    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解决方案。

    1 回复  |  直到 10 年前
        1
  •  7
  •   Rowland Shaw    16 年前

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

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