0

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

临时表的设置方式相同。

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

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

目前我是:

  1. 抓取临时行
  2. 一个接一个地插入它们
  3. 获取最后一个插入 id
  4. 然后使用新的最后插入 ID 插入联系人

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

4

1 回答 1

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;

只需确保您选择了正确的列数。

于 2012-04-10T19:49:37.243 回答