首页 > 解决方案 > 使用外键将表拆分为 2 个表

问题描述

我有一张桌子,需要分成 2 张桌子。一张表是一般信息,另一张表是更具体的信息。让我们打电话给他们general_tablefarming_table

farming_table需要有一个外键允许我将它链接到general_table. 我不确定如何将数据插入到general_table然后获取新创建的行的 id 并在我为farming_table.

我试过使用这段代码:

INSERT INTO `general_table` (name, year)
SELECT name, year
FROM `original_table`;

INSERT INTO `farming_table` (general_table_id, seeds, vehicles)
SELECT @rownum := @rownum + 1, seeds, vehicles
FROM `original_table`
CROSS JOIN (select @rownum := 0) r;

如果您只打算运行一次,上面的代码是完美的。如果我稍后必须再次运行它,当general_table已经有数据可以说它有 10 行数据,所以下一个 ID 将是 11,当我运行上面的代码时,外键将不匹配。将从 1 开始,general_table_id但应该从 11 开始。

我知道我可以通过将 更改CROSS JOIN为 this 来手动更改它,CROSS JOIN (select @rownum := 10) r;但假设我不知道最后一个 IDgeneral_table是什么。

如果有人能想到一种更强大的方法来实现我的目标,我将不胜感激。谢谢!

标签: mysql

解决方案


推荐阅读