我有一个auto_incrementing的问题案例,这是我的表我首先它是如此顺利增加id*
id* name 1 name1 2 name2 3 name3 4 name4 5 name5 6 name6
但是当我删除一条记录并插入一条新记录时,id从7开始.
id* name 1 name1 2 name2 3 name3 5 name5 6 name6 7 name7
这就是我想要做的:
id* name 1 name1 2 name2 3 name3 4 name7 5 name5 6 name6
我想要一个解决方案,其中填写每个数字,所以如果我删除一行,下一个autoinc号码将是我删除的数字而不是更高的下一个数字.
首先,它是完全罚款有这些差距.这里是没有问题的.只是你的强迫症迫使你认为这些数字必须遵循一种模式 - 他们不这样做.
auto_increment
它不是PHP的功能,它是MySQL的功能
auto_increment
确保每一行都有唯一的编号.它不处理序号
auto_increment
在并发环境中安全地工作 - 这意味着有很多用户连接到MySQL并执行操作,并且所有用户都必须能够处理数据库而不能获得用于标识行的相同ID.这是通过一个相当复杂的过程来完成的,这也是auto_increment
产量差距的原因之一
auto_increment
用于InnoDB
磁盘上记录的物理组织 - 它使用的特征auto_increment
是产生一个比以前更大的数字(它的功能,比以前更大,而不是顺序).使用它,构造一个b树,并在硬盘上依次写入记录.篡改auto_increment
使InnoDB
树重新平衡.它意味着它会通过记录并重新创建索引,如果你搞砸了 - 这是你不想要的东西.自从
当你想到它时,你甚至得到了连续数字?没有什么,除了你的大脑可能会受到伤害,因为有一些想象的秩序.
对于序列号,请使用触发器创建它们.auto_increment
只有一份工作和一份工作 - 产生独特的数字.