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

标签 mysql

我希望 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/

相关文章:

PHP实体类生成器

php - 使用php从mysql数据库反序列化数据数组

c# - 无法从 C# 表单应用程序访问 MYSQL 服务器 - 连接字符串错误

php - 如何在MySQL中搜索包含330M行的60G表?

PHP/Javascript - 更改按钮图像并调用数据库 onClick()?

mysql - 非常简单的自连接,却被忽略了?

php - 为后期静态绑定(bind)复制函数

java - MySQL 和 Spring Boot : lost connections after some interval of inactivity

sql - 对于最左侧表中的每一行,仅返回最右侧表中的一行

java - 如何从java中的类访问变量值