MySQL导入记录并切换主键增量

时间:2010-07-02 16:47:48

标签: mysql

我有一个MySQL表,其中包含 id created_date 名称列,其中id是自动递增的主键(从1开始,created_date是创建行的日期(只是一个例子)。

自此应用程序启动以来,此表中有50行。假设我有100条旧记录(考虑到created_date值)我要导入到此表中。

是否有一种简单的方法可以将当前记录的id值转换为101-150,这样我就可以导入id值为1-100的旧记录?这是否可取?

如果我不得不再做一遍,我会在启动应用程序之前调整id列(主键)的自动增量,以容纳我想要导入的记录。

3 个答案:

答案 0 :(得分:2)

您可以使用UPDATE命令重新编号:

UPDATE table SET id = id + 100;

或者将它们导入到预先设置AUTO_INCREMENT值的新表中:

 CREATE TABLE `table` (
  `id` int(10) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=101;

您需要注意确保维护参照完整性 - 如果其他表引用此表,那么您还需要确保它们也已更新。

答案 1 :(得分:1)

有可能,但我不建议在生产表上移动主键。这会破坏您的数据关联,从而破坏参照完整性。

答案 2 :(得分:0)

1。update table1 set id = id+100。确保您在其他表中更改了对这些记录的所有引用(如果您使用带有on update cascade选项的外键,它将自动完成。
2.插入100条旧记录
3.更新id的自动增量