生成一个唯一的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
还要注意,当列到99999999时,下一个插入会出错,自动递增将不会回绕并返回00000001. – tloach 2011-01-19 14:20:16
@tloach - 不是吗?只要去下一个值,即100000000? – GSTAR 2011-01-19 14:25:33