自动增量问题

时间:2011-06-17 20:42:19

标签: php mysql

  

可能重复:
  Problem with autoincrememnted “id” column

我的db表看起来像这张照片。 http://prntscr.com/22z1n最近我创建了delete.php页面。它工作正常,但当我删除第21个用户下一个注册用户得到第24个ID而不是21.是否可以将新注册的用户信息放到第一个空行? (在这种情况下第21行)

在我的注册表格中,新注册的用户可以在注册后写下现有用户的姓名,并与他们成为朋友。为了这个友谊,我有另一个表关联新注册用户和现有用户的id。为此,我在注册时使用mysql_insert_id来获取新用户的id。但是在下一次注册过程中删除第21行后,mysql_insert_id给了我21号,但是存储在第24行。并为新用户提供关联表21。我想解决这个问题

4 个答案:

答案 0 :(得分:1)

您上次发布此问题时收到了答案。 MySQL维护一个内部计数器,每次将新行插入带有自动增量列的表时,该计数器都会递增。删除行时,增量值不会下降。

为了让事情按照你想要的方式工作,你需要避免使用MySQL自动增量,并实现自己的解决方案来创建和增加ID。

答案 1 :(得分:0)

DROP您所在的字段auto_incrementing ALTER表格再次ADD字段具有相同的属性

所有现有行都重新编号,下一个auto_increment编号将等于行数加1

警告

你真的没有理由要这样做或should这样做!如果你在任何地方都有这些id的引用,我知道你从早期的问题中做过 - 这可以打破每一个链接。

答案 2 :(得分:0)

mysql_insert_id()是一个非常糟糕的方法来获取你的身份。您始终可以设置表格的auto_increment值,但我不会建议。您应始终根据某些唯一值执行插入的最新记录SELECT,并按标识DESC对其进行排序,同时将其限制为一个结果。不要使用mysql_insert_id()

答案 3 :(得分:0)

没有区别 - mysql_insert_id将返回最后插入行的自动增量ID。如果该行获得ID 24,则mysql_insert_id将返回24。

但是,您可以更改下一个值自动增量将导致它。阅读here