MySQL:主键有一些问题

时间:2013-02-25 10:08:18

标签: mysql sql database

当我从数据库中删除一个带有元数据的人时,如果我向数据库中添加一个通常是正确且安全的新数据库,数据库会计算ID + 1,对吗?

因此,当我使用meta_id(主键)10删除此人时,下一个添加的人可以再次获取meta_id 10吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

除了到目前为止发布的答案,请记住数据库的主键只有一个目的 - 标识一行。它不是那么容易使用顺序编号。当你想要实现你描述的功能时会有很多含义 - 当你将数据写入硬盘时,你会打扰MySQL的内部(更确切地说是InnoDB引擎),反过来会让它变慢。

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

相关问题