生成一个唯一的ID

问题描述:

我正在研究生成唯一ID的函数 - 我的具体要求是唯一ID只需要8位数字。生成一个唯一的ID

无论如何,我刚刚意识到,我们可以设置一个ID自动增量字段从任何数字开始。所以假设我从11111111开始 - 我认为所有新记录都会从这个值增加是正确的吗?如果是这样,那么我有我独特的8位数字ID,不需要使用此功能。

而且,如果一条记录被删除,那么新记录是否会重新使用该删除的ID?

1)自动增量值不重用

2)是,通过自动增量计数器设置为一个8位数字(如10000000),就可以实现这一点! (表选项“AUTO_INCREMENT = N”)

这是正确的。如果您的自动编号列的起始位置为11111111,则下一行的编号为11111112.

当记录被删除时,其自动编号为而不是重复使用。

编辑:关于最大值,这取决于您选择的列类型。从MySQL文档:

使用足够大的整数数据类型为AUTO_INCREMENT列来保存您将需要的最大序列值。当列达到数据类型的上限时,下一次生成序列号的尝试失败。例如,如果您使用TINYINT,最大允许的序列号是127。TINYINT UNSIGNED,最大值为255

你可以使用一个INT,至多到4294967295,或BIGINT,至多到18446744073709551615。见http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

+1

还要注意,当列到99999999时,下一个插入会出错,自动递增将不会回绕并返回00000001. – tloach 2011-01-19 14:20:16

+0

@tloach - 不是吗?只要去下一个值,即100000000? – GSTAR 2011-01-19 14:25:33