我希望 MYSQL 为每个条目分配一个 16 位数字,因为它将用于私有(private)信用卡服务。我该怎么做呢??
我已经将名为 id 的字段设置为自动递增和 bigint,但它仍然只按从 1 开始的顺序分配数字。
我需要 16 位随机数字。
求助!
最佳答案
您可以设置自动递增数字从任意数字开始
ALTER TABLE MY_TABLE AUTO_INCREMENT = 1000000000000000; -- the first 16-digit number
对指定个数的唯一限制是不能小于指定表当前自增列的最大个数。
然而,这不会提供随机数字。
要创建一个随机的 16 位数字,您可以在插入时使用触发器,该触发器使用 PASSWORD()
函数,它会创建一个 16 位十六进制数字,并在需要时将其转换为数字通过对结果调用 UNHEX()
和 SUBSTR()
来捕获 16 个随机数字。
为了安全起见,您应该传递一个带有值的种子,例如,新的 id 值与记录中的另一条信息连接在一起,与一个可能与当前时间连接的常量连接起来。您想走多远取决于您。
随机数也可以在您的应用程序代码中完成,这可能是一个更好的选择,因为它比数据库功夫更容易调试和控制。
关于MYSQL 为每个条目自动递增 16 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908886/