一尘不染

如何在mysql中重用已删除的主键?

mysql

我在mysql表中有一个名为“ id”的列,这也是自动递增的主键。

当我删除行时,其ID也会被删除,从而在我的ID序列中产生“空洞”,例如

1、2、3、9、10、30等

有没有办法重复使用这些已删除的ID:S?


阅读 327

收藏
2020-05-17

共1个答案

一尘不染

使用:

ALTER TABLE [your table name here] AUTO_INCREMENT = 1

…将根据表中现有的最高现有值将auto_increment值重置为下一个。这意味着它不能用于校正多个间隙。

这样做的唯一原因是为了美观的记录-数据库不在乎记录是否是连续的,仅是它们始终保持相互关联。无需为了数据库而“更正”这些值。

如果id要向用户显示这些值,这就是为什么希望它们始终是顺序的,那么我建议添加一个代理键。使用代理键向用户显示,因此可以根据需要对值进行重新排序,但是参考完整性不会受到影响。在这种情况下,代理键将是一个整数列。

2020-05-17