0

当我从数据库中删除一个人及其元数据时,如果我将新人添加到数据库中,数据库会计算 ID + 1,这通常是正确且安全的方式,对吗?

那么当我删除meta_id(主键)为10的人时,下一个添加的人能否再次获得meta_id 10?

4

2 回答 2

3

实际上,MySQL 将保留一个内部索引迭代器,无论您从数据库中删除的数据如何,该迭代器都会递增。因此,如果您创建一个主键 ID 为 10 的新行,然后删除该行并创建一个新行,如果您依赖 auto_increment 迭代您的 ID,则新行的主键 ID 将为 11。这种行为是预期的。

简单来说,没有。MySQL 的 auto_increment 不允许您描述的内容。

于 2013-02-25T10:11:11.140 回答
0

除了到目前为止发布的答案之外,请记住数据库的主键只有一个目的 - 识别一行。它不是为了方便使用顺序编号。当您想要实现您所描述的功能时,有很多含义 - 在将数据写入硬盘时,您会扰乱 MySQL(更准确地说,是 InnoDB 引擎)的内部结构,从而使其变慢。

如果您需要某种与记录相关的顺序编号,您可以创建触发器来处理它,或者在显示数据库中的记录时使用某种编号方法。您不会为此目的使用主键或 auto_increment。

于 2013-02-25T10:21:57.470 回答