如何重置字段的AUTO_INCREMENT?
我希望它再次从1开始计数。
如何重置字段的AUTO_INCREMENT?
我希望它再次从1开始计数。
当前回答
要更新到最新的加号id,请执行以下操作:
ALTER TABLE table_name AUTO_INCREMENT =
(SELECT (id+1) id FROM table_name order by id desc limit 1);
编辑:
SET @latestId = SELECT MAX(id) FROM table_name;
SET @nextId = @latestId + 1;
ALTER TABLE table_name AUTO_INCREMENT = @nextId;
未测试,请在运行前测试*
其他回答
此问题的最高评分答案都建议“ALTER yourtable AUTO_INCREMENT=value”。然而,这仅在alter中的值大于自动递增列的当前最大值时有效。根据MySQL 8文档:
不能将计数器重置为小于或等于当前使用的值。对于InnoDB和MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大AUTO_INCREENT列值加1。
实际上,您只能更改AUTO_INCREMENT以增加自动递增列的值,而不能将其重置为1,正如OP在问题的第二部分中所要求的那样。对于实际允许您从当前最大值向下设置AUTO_INCREMENT的选项,请查看重新排序/重置自动递增主键。
当心TRUNCATE TABLE your_TABLE将删除your_TABLE中的所有内容。
您还可以使用语法TRUNCATE表,如下所示:
TRUNCATE TABLE table_name
尝试运行此查询:
ALTER TABLE tablename AUTO_INCREMENT = value;
或尝试此查询以重置自动增量
ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL;
并设置自动增量,然后运行以下查询:
ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `table_name` DROP `id`;
ALTER TABLE `table_name` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ;
很快,首先我们删除了id列,然后再次添加了主键id。。。
警告:如果您的列具有约束或作为外键连接到其他表,这将产生不良影响。
首先,删除列:
ALTER TABLE tbl_name DROP COLUMN column_id
接下来,重新创建列并将其设置为FIRST(如果您希望它作为我假设的第一列):
ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST