MYSQL为每个条目自动递增一个16位数字

时间:2013-06-04 02:26:17

标签: mysql

我希望MYSQL为每个条目分配一个16位数字,因为它将用于私人信用卡服务。我该怎么做呢??

我已将名为id的字段设置为自动增量和bigint,但它仍然只按从1开始的顺序分配数字。

我需要数字长16位且随机。

请帮忙!

1 个答案:

答案 0 :(得分:2)

您可以将自动增量编号设置为以任意数字

开头
ALTER TABLE MY_TABLE AUTO_INCREMENT = 1000000000000000; -- the first 16-digit number

指定数量的唯一限制是它不小于指定表的自动增量列的当前最大数量。

然而,这不会提供随机数字。

要创建一个随机的16位数字,您可以在插入时使用PASSWORD()函数创建一个16位十六进制数字,并在需要时通过调用{{1将其转换为数字}}和UNHEX()在结果上捕获16个随机数字。

为了安全起见,你应该传递一个带有值的种子,例如新的id值与记录的另一条信息连接起来,该记录与一个与当前时间连接的常量连接起来。这取决于你想要走多远。

随机数也可以在您的应用程序代码中完成,这可能是一个更好的选择,因为它比数据库功夫更容易调试和控制。