如何重置字段的AUTO_INCREMENT?
我希望它再次从1开始计数。
如何重置字段的AUTO_INCREMENT?
我希望它再次从1开始计数。
当前回答
警告:如果您的列具有约束或作为外键连接到其他表,这将产生不良影响。
首先,删除列:
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
其他回答
最适合我的解决方案:
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一起工作,我不需要知道当前的最大值!
这边自动递增计数器将复位,并将从存在的最大值自动启动。
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。
请注意,表中的所有字段都将被重新计数,并且将具有其他ID!!!。
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
ALTER TABLE `table_name` DROP `id`;
ALTER TABLE `table_name` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ;
很快,首先我们删除了id列,然后再次添加了主键id。。。
从MySQL 5.6开始,您可以在InnoDB中使用简单的ALTERTABLE:
ALTER TABLE tablename AUTO_INCREMENT = 1;
更新文件以反映这一点:
13.1.7 ALTER TABLE语句
我的测试还显示该表未被复制。只需更改值即可。