0

我定义了一个 7 位数字的自增 ID 字段int(7) ZEROFILL(一开始一切都很好。然后我注意到该字段会“跳过”整个范围。比如直接从 0000100 到 0000200。直接到 9999999 就变得很复杂了,这是 允许的最后一个值int(7),因为下次它设置的值是“10000000”,它包含 8 个数字,而它到目前为止,只使用了 0.005% 的可用值int(7)

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

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

谢谢你的帮助!

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

4

3 回答 3

1

使用AUTO_INCREMENT应该工作。请参阅此SQLFiddle 示例。使用ZEROFILL不会影响数据,因为它仅用于数据表示

于 2012-08-20T10:12:53.790 回答
0

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

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

如果这不是所需的行为,则 AUTO_INCREMENT 不是该工作的正确工具。

于 2012-08-20T10:12:41.047 回答
-1

使用 Max(Id) 获取插入前的最大 id,然后使用Max(Id)+1插入下一条记录

于 2012-08-20T10:10:07.667 回答