MySql Autoincrement字段不使用下一个可用值

时间:2012-08-20 09:57:40

标签: mysql auto-increment

我定义了一个7位数(int(7) ZEROFILL)的自动增量ID字段,以获得0000001,0000002,0000003等,足以使该表包含多达10 000 000行。 一开始一切都还可以。然后我注意到该字段将“跳过​​”整个范围。例如,它将直接从0000100转到0000200。 当它直接转到9999999时,事情变得非常复杂,这是int(7)允许的最后一个值,因为下次设置“10000000”值时,它包含8位数,而到目前为止只使用了0.005% int(7)可用的值。

问题是我真的需要这个字段的7位数格式。

有没有办法真正强制该字段使用下一个可用值?

感谢您的帮助!

编辑:仅供参考,行定义为int(7) UNSIGNED ZEROFILL AUTO_INCREMENT

3 个答案:

答案 0 :(得分:1)

使用AUTO_INCREMENT应该有效。见SQLFiddle example。使用ZEROFILL不会影响数据,因为它仅用于数据表示

答案 1 :(得分:0)

虽然我不确定我是否完全理解你的问题,但这不是AUTO_INCREMENT应该如何工作的。它基本上是一个计数器,因此它不会查找下一个可用值。它只是递增计数器。

在实践中意味着什么?您可能有顺序值:1,2,3 ......但只要您手动插入较大的值(例如1000),计数器就会递增,因此下一个值为1001。即使您删除行,计数器也会保留在1001。重置的唯一方法是发出ALTER TABLE stametement。

如果这不是所需的行为,则AUTO_INCREMENT不适合该作业。

答案 2 :(得分:-1)

使用Max(Id)获取插入前的最大ID,然后使用 Max(Id)+1

插入下一条记录