如何连续制作主键?

时间:2011-05-11 12:13:57

标签: php mysql

假设我的表中有20行,现在我删除了最后4行。在下一次我再插入2行,然后是主键号。将是

1,2,3...16,21,22.

有没有办法恢复该密钥,意味着任何方式在16的下一个存储行,结果将是

1,2,3...16,17,18 

6 个答案:

答案 0 :(得分:3)

你不需要这个。 请相信我!

答案 1 :(得分:1)

真的像Vadim所说的那样做一件令人讨厌的事情。 如果你有相关的桌子,也是一个危险的游戏。

与此问题类似:Reorder / reset auto increment primary key

答案 2 :(得分:1)

不知道您使用的是哪个数据库,但这可能有所帮助: SQLite Reset Primary Key Field

答案 3 :(得分:1)

为什么需要这个?

你问为什么不呢?

因为我们说你的桌子是用户 - 现在当你在这里重新排列密钥时,帖子中的“posted_by”区域(例如)现在会显示一个不同的用户......这是一个不好的做法。

答案 4 :(得分:0)

可能会这样做但会损害您的数据库。如果您要这样做,您需要完全理解您正在做什么以及它将如何影响数据库中的所有内容(相关表,复制,备份等)。以下是有关如何操作的信息的链接,但我强烈建议您重新考虑。

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

答案 5 :(得分:0)

只要插入/更新的值不违反唯一性,您就可以为auto_increment列分配值。还有其他人建议你必须确保你不要搞乱任何关系。如果你这样做是因为你想在UI中的某个地方显示PK,你应该改变表格以获得DisplayID字段,或者编写一个查询,在PK命令后返回一个连续的迭代器。