我在mysql数据库中有自动增量PRIMARY KEY的表。定期删除此表中的行并添加。因此结果是最新行的PK值正在快速增长,但此表中没有那么多行。
我想做的是以这种方式“重新计算”PK,第一行有PK = 1,第二行PK = 2,依此类推。该表的PK没有外部依赖关系,所以它是“安全的”。
无论如何它只能使用mysql查询/工具完成吗?或者我必须从我的代码中做到这一点?
答案 0 :(得分:11)
set @pk:=0;
update
your_table
set pk=@pk:=@pk+1
order by pk; <-- order by original pk
在我看来,拥有一个很大的代理键很好。您可能不太可能用完所有允许的最大整数。考虑一下你可以使用unsigned加倍。
答案 1 :(得分:0)
重新计算后,不要忘记更改表格中的AUTO_INCREMENT值:
mysql> SELECT @pk;
+------+
| @pk |
+------+
| 9911 |
+------+
1 row in set (0.00 sec)
ALTER TABLE your_table AUTO_INCREMENT = 9912;
答案 2 :(得分:-1)
这可以解决您的问题:http://www.liewcf.com/mysql-reset-auto-increament-number-115/ 简而言之:您可以使用ALTER TABLE table_tablename AUTO_INCREMENT = 1.要将其重置为1,您应首先从表中删除记录或将其ID更改为最低值。