mysql auto_increment 重置_如何重置MySQL中的AUTO_INCREMENT?

你可以用下面的方法重置计数器

ALTER TABLE tablename AUTO_INCREMENT = 1

对于InnoDB,您不能将auto_increment值设置为低于或等于最高当前索引。 (引自ViralPatel ):

请注意,您不能将计数器重置为小于或等于任何已使用的值。 对于MyISAM,如果该值小于或等于当前AUTO_INCREMENT列中的最大值,则将该值重置为当前最大值加1。 对于InnoDB,如果该值小于列中的当前最大值,则不会发生错误,并且当前序列值不会更改。

请参阅如何使用另一个表中的MAX值重置MySQL自动增量? 如何dynamic获得可接受的价值。

ALTER TABLE tablename AUTO_INCREMENT = 1

就像这样:

ALTER TABLE tablename AUTO_INCREMENT = value;

参考: http : //dev.mysql.com/doc/refman/5.1/en/alter-table.html

SET @num := 0; UPDATE your_table SET id = @num := (@num+1); ALTER TABLE your_table AUTO_INCREMENT =1;

我认为这将做到这一点

YxbA4.png 在“操作”选项卡下有一个非常简单的方法,你可以在表格选项中设置自动增量到你想要的数字。

最适合我的解决scheme:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED; COMMIT; ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT; COMMIT;

它的速度很快,和innoDB一起工作,我不需要知道当前的最大值! 这样自动增量计数器就会复位,并自动从最大值开始计数。

如何重置MySQL自动增量列有很好的select

请注意, ALTER TABLE tablename AUTO_INCREMENT = value; 对InnoDB不起作用

这个问题的评分最高的答案都推荐“ALTER yourtable AUTO_INCREMENT = value”。 但是,这只有在alter中的值大于autoincrement列的当前最大值时才有效。 根据MySQL文档 :

您不能将计数器重置为小于或等于任何已经使用的值。 对于MyISAM,如果该值小于或等于当前AUTO_INCREMENT列中的最大值,则将该值重置为当前最大值加1。 对于InnoDB,可以使用ALTER TABLE … AUTO_INCREMENT =从MySQL 5.0.3起的值,但是如果该值小于列中当前的最大值,则不会发生错误,并且当前序列值不会更改。

实质上,只能修改AUTO_INCREMENT来增加自动增量列的值,而不会将其重置为1,因为OP会在问题的第二部分中提出要求。 对于实际允许您将AUTO_INCREMENT从当前最大值向下设置的选项,请查看重新sorting/重置自动递增主键 。

添加更新,因为MySQL 5.6中的function已更改。 从MySQL 5.6开始,你可以使用简单的ALTER TABLE和InnoDB:

ALTER TABLE tablename AUTO_INCREMENT = 1;

文档已更新,以反映这一点:

我的testing也显示表格不被复制,值只是简单的改变。

ALTER TABLE news_feed DROP id ALTER TABLE news_feed ADD id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

我在我的一些脚本中使用了这个,id字段被删除,然后加上以前的设置,数据库表中的所有存在的字段被填入新的自动增量值,这也应该与InnoDB一起工作。

请注意,表格中的所有字段将被重新logging,并且将具有其他ID!

你也可以像这样使用TRUNCATE表的语法: TRUNCATE TABLE table_name

谨防!! TRUNCATE TABLE your_table将删除 TRUNCATE TABLE your_table 所有内容 !

它是为空表:

ALTER TABLE `table_name` AUTO_INCREMENT = 1;

如果你有数据,但你想清理它,我build议使用这个:

ALTER TABLE `table_name` DROP `auto_colmn`; ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);

您可以简单地截断表来重置序列

TRUNCATE TABLE TABLE_NAME

一个表的自动增量计数器可以(重新)设置两种方式:

通过执行一个查询,像其他人已经解释:

ALTER TABLE AUTO_INCREMENT=;

使用工作台或其他可视化数据库devise工具。 我将在Workbench中展示它是如何完成的 – 但是在其他工具中也不会有太大的不同。 右键单击所需的表格,然后从上下文菜单中selectAlter table 。 在底部,您可以看到所有可用的选项来更改表格。 selectOptions ,你会得到这个表格:

LTHG1.png

然后只需在图像中显示的Auto increment字段中设置所需的值。 这将基本上执行第一个选项中显示的查询。

我试图改变表,并将auto_increment设置为1,但它没有工作。 我决定删除正在递增的列名,然后用您的首选名称创build一个新列,并将新列设置为从一开始就增加。

要更新最新加一个ID

ALTER TABLE table_name AUTO_INCREMENT = (SELECT (id+1) id FROM table_name order by id desc limit 1);

请使用下面的代码:

ALTER TABLE tablename AUTO_INCREMENT = 1

我build议你去查询浏览器,并执行以下操作:

去模式和find你想改变的表。

右键单击并select复制创build语句。

打开结果选项卡并粘贴create语句。

转到create语句的最后一行,查找Auto_Increment = N,(其中N是auto_increment字段的当前数字。)

将Nreplace为1。

按下ctrl + enter 。

一旦你在表格中input新行,Auto_increment应该重置为1。

我不知道如果你尝试添加一个auto_increment字段值已经存在的行会发生什么。

希望这个帮助!

最好的方法是删除与AI的领域,并再次与AI添加,适用于所有表

下面的代码适合我

Alter TABLE employee AUTO_INCREMENT = 5;

版本 – 5.7.13

引擎 – innodb

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值