以下是该方案:
我有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?有办法吗?
目前我:
我只是不知道这是否是最有效的方法。谢谢!
答案 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;
确保选择正确的#列。