Mysql 我希望重用已删除行的间隙

Mysql 我希望重用已删除行的间隙,mysql,auto-increment,Mysql,Auto Increment,我的一个表上有一个自动递增的主键。例如,如果我有3行,删除第三行,剩下两行。但是,如果插入新行,其ID将自动为4,ID分别为1、2和4 如何重新使用已删除的ID并使新插入记录的ID自动为3?真的,您不应该这样做。主键应该是纯技术的、无意义的值。他们的价值,以及这一代人的单调,应该根本不重要 此外,由于它是该行的主键,在其他表中可能会有几十(或数千)行引用此ID(外键),因此在表中更改它是不够的:您必须在任何地方更改它 这个ID很有可能也被其他应用程序引用(例如,它可能是浏览器中书签URL的一部分

我的一个表上有一个自动递增的主键。例如,如果我有3行,删除第三行,剩下两行。但是,如果插入新行,其ID将自动为4,ID分别为1、2和4


如何重新使用已删除的ID并使新插入记录的ID自动为3?

真的,您不应该这样做。主键应该是纯技术的、无意义的值。他们的价值,以及这一代人的单调,应该根本不重要

此外,由于它是该行的主键,在其他表中可能会有几十(或数千)行引用此ID(外键),因此在表中更改它是不够的:您必须在任何地方更改它

这个ID很有可能也被其他应用程序引用(例如,它可能是浏览器中书签URL的一部分),更改它的值会使所有这些引用无效

您不应该更改主键。它应该是永恒不变的


编辑:我误解了这个问题。实际上,你想重用旧ID。这也是个坏主意。现有引用将引用它们最初引用的内容以外的内容。这就是当你改变了你的电话号码,并且它被其他人重复使用时会发生的情况,他们开始接到很多仍然认为这个电话号码是你的人的电话。很烦人。您希望避免这种情况。

请不要这样做。没必要,你为什么要这么做?主键的实际值在任何方面都不重要。如果出于某种原因,你的设计是错误的。如果你需要一个没有间隙的编号系统,正确的关系设计将要求你使该列不是主键,因为它具有超越唯一性的意义;例如,它是支票账户中支票的编号。主键只能唯一地标识行。