2011-08-01 73 views
3

我是新来的整个数据库场景,只是学习。我有一个数据库MySQL,我使用phpmyadmin来编辑字段等。我创建了一个auto_incremenet'id'字段,它被设置为主要字段。如果我添加5个字段,该ID将是'1,2,3,4,5'。如果我删除所有这些字段并添加另外5个字段,为什么ID会变成'6,7,8,9,10'? (而不是回到0,因为技术上其他领域不再存在,所以它的独特权利?)。有没有办法让ID顺序数字? 1,2,3,4,5?当你从数据库中删除一条记录时mysql

+2

主键只能使用一次......因此,即使删除了一条记录,PK也不会重新分配给新记录。 –

+0

如果你确实需要跟踪诸如“InUseID”之​​类的东西,你需要一个独立的字段,并且清除它与主键“ID”不一样 – Matt

回答

5

你不需要担心它。你的主键应该是一个unsigned int,它可以保存足够多的数字。

0

看看this的问题。但基本上是:

ALTER TABLE mytable AUTO_INCREMENT = 1; 

UPDATE

如前所述,具有自动生成摆弄会的PK无限,因为你有很多头疼的。或者写一堆样板代码来做家务。

+0

但是请注意,在生产环境中自动生成PK值导致非常令人沮丧的结果。 – Mchl

1

我相信会发生这种情况,因为在使用关系数据库系统时,通常可以通过它们的id将行连接到其他行。如果你开始重新使用ID,那么你可能会陷入混乱的境地。

可以重置AUTO_INCREMENT计数器任何你想使用下面的查询:

ALTER TABLE tableName AUTO_INCREMENT=123 

如果要删除表中的所有行,你可以使用TRUNCATE这也将重置计数器。

TRUNCATE TABLE tableName 
1

我认为这种行为的主要原因是效率,这意味着MySQL不需要跟踪哪些数字没有被使用,它只需要知道哪个数字是最后使用的。