用外键将表拆分成2个表

时间:2018-07-19 08:40:38

标签: mysql

我有一张桌子,需要将其拆分为2个桌子。一个表是一般信息,另一个表是更具体的信息。让我们称它们为general_tablefarming_table

farming_table需要有一个外键,以便我可以将其链接到general_table。我不确定如何将数据插入general_table,然后获取新创建的行的ID,并在为farming_table创建行时使用该ID。

我尝试使用此代码:

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,当我运行上述代码时,外键将不匹配。 general_table_id将从1开始,但应从11开始。

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

如果有人能想到实现我的目标的更强大的方法,我将非常感激。谢谢!

0 个答案:

没有答案