我有InnoDB表,如下所示:
ID | DATA
----------
1 | A
2 | B
5 | C
8 | D
13 | E
我想将列ID重置为如下所示:
ID | DATA
----------
1 | A
2 | B
3 | C
4 | D
5 | E
但不幸的是,这不起作用:
ALTER TABLE tableName AUTO_INCREMENT = 1
任何解决方案?
由于
答案 0 :(得分:2)
你可以做那些步骤
ALTER TABLE `table` DROP `id`;
ALTER TABLE `table` AUTO_INCREMENT = 1;
ALTER TABLE `table` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
1-将删除id列
2- set auto_increment从1开始
3-首先使用递增的值创建列ID。
然后它会再次命令你的所有ID
this也会帮助你
答案 1 :(得分:1)
表的AUTO_INCREMENT值确定MySQL将为下一个新记录提供的值 - 它对现有数据没有影响。
如果您想更改数据,则必须在自定义程序中自行完成。像(伪代码):
set counter = 1;
while fetch new record and set X to current id {
update table set ID = counter where id = X;
counter = counter + 1;
}
无论其! - 如果您在任何其他表中使用该ID,则还必须更新其中的值。这可能会变得非常复杂 - 您应该尽量避免更改主键值。
最后,无符号BIGINT的最大值是18,446,744,073,709,551,615 - 你真的会在不久的将来达到这个值吗?