我有一个MySQL表,其中包含 id , created_date 和名称列,其中id是自动递增的主键(从1开始,created_date是创建行的日期(只是一个例子)。
自此应用程序启动以来,此表中有50行。假设我有100条旧记录(考虑到created_date值)我要导入到此表中。
是否有一种简单的方法可以将当前记录的id值转换为101-150,这样我就可以导入id值为1-100的旧记录?这是否可取?
如果我不得不再做一遍,我会在启动应用程序之前调整id列(主键)的自动增量,以容纳我想要导入的记录。
答案 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的自动增量