我在mysql数据库中有一个带有自动增量主键的表。此表中的行会定期删除和添加。因此,结果是最新行的PK值增长非常快,但此表中没有那么多行。
我想做的是用这种方式“重新计算”PK,第一行PK = 1,第二行PK =2,依此类推。这个表的PK没有外部依赖,所以它是“安全的”。
有没有只用mysql查询/工具就能做到的方法?或者我必须从我的代码中去做?
发布于 2011-01-05 16:45:49
set @pk:=0;
update
your_table
set pk=@pk:=@pk+1
order by pk; <-- order by original pk在我看来,拥有一个大的代理键是很好的。您可能不太可能用完所有允许的最大整数。考虑一下,你可以使用unsigned将其加倍。
发布于 2013-11-13 14:52:08
重新计算后,不要忘记更改表格中的AUTO_INCREMENT值:
mysql> SELECT @pk;
+------+
| @pk |
+------+
| 9911 |
+------+
1 row in set (0.00 sec)
ALTER TABLE your_table AUTO_INCREMENT = 9912;发布于 2011-01-05 16:48:26
这应该可以解决您的问题:http://www.liewcf.com/mysql-reset-auto-increament-number-115/简而言之:您可以使用ALTER TABLE table_tablename AUTO_INCREMENT = 1。为了将其重置为1,您应该首先从表中删除记录或将其id更改为最低值。
https://stackoverflow.com/questions/4602156
复制相似问题