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

ajs*_*sie 13 php mysql

我在mysql表中有一个名为'id'的列,它也是一个自动递增的主键.

当我删除行时,他们的id也将被删除,从而在我的id序列中创建"漏洞",例如.

1,2,3,9,10,30等

有没有办法重用这些删除的id:s?

OMG*_*ies 11

使用:

ALTER TABLE [your table name here] AUTO_INCREMENT = 1
Run Code Online (Sandbox Code Playgroud)

...将基于表中存在的最高现有值将auto_increment值重置为下一个值.这意味着它不能用于纠正不止一个的差距.

这样做的唯一原因是化妆品 - 数据库并不关心记录是否是连续的,只是它们一致地相互关联.没有必要为数据库"纠正"值.

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