mysql - 我的sql如何重置AUTO_INCREMENT ?

如何重置字段的自动增量? 我希望它从1开始重新计数。

时间:

可以使用以下方法重置计数器:


ALTER TABLE tablename AUTO_INCREMENT = 1

对于InnoDB,你不能将auto_increment值设置为最高或等于当前的索引,

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


ALTER TABLE tablename AUTO_INCREMENT = 1

就像这样:


ALTER TABLE tablename AUTO_INCREMENT = value;

注意 ALTER TABLE tablename AUTO_INCREMENT = value;不适用于InnoDB

enter image description here 在"操作"选项卡下使用phpmyadmin很容易,你可以在表格选项中设置自动增量到你想要的数字。

最佳解决方案:


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中工作,我不需要知道当前的最大值!自动递增计数器将重置,并且它将自动从存在的最大值开始。

这个问题的最高等级的回答都推荐"更改 yourtable AUTO_INCREMENT=值"。 然而,这仅适用于当 value 在改变大于当前最大列的自动增量值。 根据MySQL文档 。xml:

你不能将计数器重置为小于或者等于任何已经使用的值的计数器。 对于 MyISAM,如果该值小于或者等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大值加上。 对于 InnoDB,你可以使用 altertable 。。 截至 MySQL 5.0.3 AUTO_INCREMENT = 值,但是如果值小于当前的最大值在列,不会发生任何错误和当前序列值不更改。

在第二部分的question,从本质上说,你只能改变AUTO_INCREMENT作为 OP asks.来增加的自动增量列的值,而不是将它的重置到 1, 对于实际允许你从当前最大值设置AUTO_INCREMENT的选项,请查看 MySQL: 重新排序/重置自动递增主键? 。


SET @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;

我觉得这可以


ALTER TABLE news_feed DROP id

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

你也可以使用如下所示的语法 trucate 表: TRUNCATE TABLE table_name

...