2

我已经在 MySQL 中创建了表,并想在表中添加一个列,即“myid”,即“mytable”。

已经定义了主键

我使用以下查询添加自动增量:

ALTER TABLE mytable ADD myid INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE;

但我希望自动增量应该从 30 而不是 1 开始。

需要对查询进行哪些修改?还有其他方法可以添加吗?

其次,如果我使用以下程序,

首先我运行查询:ALTER TABLE mytable AUTO_INCREMENT = 30;

然后运行ALTER TABLE mytable ADD myid INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE;

会好吗?是还是不是?

4

1 回答 1

1

如果您的表为空或非常小,则首先添加 AUTO_INCREMENT 列,然后设置它的起始值,如下所示:

制作myidAUTO_INCREMENT列:

ALTER TABLE `mytable` ADD `myid` INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE;

将其起始值设置为30 ALTER TABLE mytableAUTO_INCREMENT = 30;

警告

如果您有很多记录mytable并且您使用

ALTER TABLE mytable AUTO_INCREMENT = 30;

MySQL 服务器将创建一个新表,将旧表中的所有数据复制到新表中,删除旧表,然后重命名新表,即使该表没有结构更改。服务器响应将显示所有行都是affected这样的:

mysql> 更改表 mytable auto_increment = 30; 查询正常,609481 行受影响(1 分 4.55 秒)记录:609481 重复:0 警告:0

表副本可能会出现潜在问题,例如用于数据的第二个副本的可用磁盘空间不足。

您可以使用技巧来插入一个虚拟行并将 AUTO_INCREMENT 列显式设置为 29,然后立即删除该虚拟行。插入的下一行将从 30 开始,值将从那里向上。

于 2013-08-27T09:54:57.887 回答