MySQL - 插入外键索引

时间:2012-04-10 19:28:53

标签: mysql insert bulkinsert insert-update lastinsertid

以下是该方案: 我有2个表和2个临时表。在将用户数据插入官方表之前,我将它们插入到临时表中以便他们进行检查。有company表包含公司信息,contact表包含联系信息。 contact表有一个名为company_id的字段,它是company表的外键索引。

临时表的设置方式相同。

我想做的事情有:INSERT INTO company () SELECT * FROM temp_company;INSERT INTO contact () SELECT * FROM temp_contact

我的问题是,如何使用这样的语句将外键从temp_company转移到company表上新插入的id?有办法吗?

目前我:

  1. 抓住临时行
  2. 一个接一个地插入
  3. 抓住最后一个插入ID
  4. 然后使用新的最后插入ID
  5. 插入联系人

    我只是不知道这是否是最有效的方法。谢谢!

1 个答案:

答案 0 :(得分:0)

如果两个表中的列数相同,那么您应该只使用那里的语法吗?只需取出()即可。只需确保没有任何重复的主键:

INSERT INTO company SELECT * FROM temp_company;
INSERT INTO contact SELECT * FROM temp_contact;

您还可以专门指定插入的列,这样您就可以准确指定作为新ID插入的列。

INSERT INTO company (`ID`,`col_1`,...,`last_col`) SELECT `foreign_key_col`,`col_1`,...,`last_col` FROM temp_company;
INSERT INTO contact (`ID`,`col_1`,...,`last_col`) SELECT `foreign_key_col`,`col_1`,...,`last_col` FROM temp_contact;

确保选择正确的#列。