2013-02-25 58 views
0

当我用数据库中的元数据删除一个人时,如果我添加一个新的数据库,通常是正确的和安全的方式,数据库会统计ID + 1 , 对?MySQL:我有一些主键问题

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

+0

不,如果你的主键是10,并且你正在使用MySQL中的'auto_increment',那么删除这一行将不会释放主键。下一个将是11,不管' 10插槽“是免费的。 – halfer 2013-02-25 10:11:25

回答

3

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

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

+0

请告诉我这个解释是否难以理解,我会尽力解释它。你的英语没问题。 :) – L0j1k 2013-02-25 10:11:50

+1

我明白了...... thx :-) – Nubu 2013-02-25 14:32:52

+0

如果这个回答适合你,请不要忘记接受它。谢谢! – L0j1k 2013-02-25 17:40:06

0

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

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