我有看起来像这样的 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 表名 AUTO_INCREMENT=1
有什么解决办法吗?
谢谢
你可以做这些步骤
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- 设置 auto_increment 从 1 开始
3-首先创建具有递增值的列 ID。
然后它会再次订购你所有的身份证
这也会帮助你
表的 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 - 你真的会在不久的将来达到这个值吗?