2010-07-02 36 views
0

我有一个包含列IDCREATED_DATE,并,其中id是自动递增的主键(从1开始)和CREATED_DATE是一个MySQL表行的创建日期(只是一个例子)。MySQL的进口记录和转移的主键增量

自该应用程序发布以来,该表中有50行。假设我有100个旧记录(考虑created_date值),我想将其导入到此表中。

有没有简单的方法将当前记录的id值转移到101-150,所以我可以导入id值为1-100的旧记录?这甚至是可取的吗?

如果我不得不重新做一遍,我会调整id列(主键)的自动增量,然后启动应用程序以适应我打算导入的记录。

回答

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

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

0

1. update table1 set id = id+100。请确保您更改为其他表这些记录的所有引用(它会自动,如果你使用外键与on update cascade选项完成。该ID的
2.将100个旧记录
3.更新自动递增