如何重置MySQL中的AUTO_INCREMENT?
我怎样才能重置字段的auto_increment
? 我希望它从1
开始重新计数。
你可以用下面的方法重置计数器
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;
我认为这将做到这一点
在“操作”选项卡下有一个非常简单的方法,你可以在表格选项中设置自动增量到你想要的数字。
最适合我的解决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;
文档已更新,以反映这一点:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
我的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 <table_name> AUTO_INCREMENT=<table_id>;
-
使用工作台或其他可视化数据库devise工具。 我将在Workbench中展示它是如何完成的 – 但是在其他工具中也不会有太大的不同。 右键单击所需的表格,然后从上下文菜单中select
Alter table
。 在底部,您可以看到所有可用的选项来更改表格。 selectOptions
,你会得到这个表格:然后只需在图像中显示的
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