1

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

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

我需要这些数字是 16 位长且随机的。

请帮忙!

4

1 回答 1

2

您可以将自动递增编号设置为从任意编号开始

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

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

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

要创建一个随机的 16 位数字,您可以在使用函数的 insert 上使用触发器,该PASSWORD()函数创建一个 16 位十六进制数字,并在需要时通过调用将其转换为数字,UNHEX()SUBSTR()在结果上捕获 16 个随机数字。

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

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

于 2013-06-04T02:31:08.040 回答