我想执行一个随机函数rand(100001, 1000000)
,它必须生成随机数s
,它必须在两个不同的领域中是唯一的。
为了清楚地解释它,我有两个表A
,一个表有状态记录,另一个Submitted
表Approved
只有B
状态记录Rejected
。
我有一个ackno
在表中调用的字段A
以及B
与两个表字段相比需要随机且唯一的表。
这可能吗 ?任何人都可以给出解决方案吗?
我想执行一个随机函数rand(100001, 1000000)
,它必须生成随机数s
,它必须在两个不同的领域中是唯一的。
为了清楚地解释它,我有两个表A
,一个表有状态记录,另一个Submitted
表Approved
只有B
状态记录Rejected
。
我有一个ackno
在表中调用的字段A
以及B
与两个表字段相比需要随机且唯一的表。
这可能吗 ?任何人都可以给出解决方案吗?
随机数不会是唯一的。在这种情况下,您有 999.999 个数字,根据记录数,您可以计算 2 个数字相同的概率。
我看到了两种确保独特价值的方法。
首先你可以使用autoincrement
. 让我们table A
从 1table B
开始,从 1.000.000 开始。只要table A
行数少于一百万,就可以了。
二是使用uuid
. UUID 是一个 128 位数字,由五个十六进制数字组成的 utf8 字符串以 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 格式表示。
请注意,这两种方法都提供可猜测的值。如果这是一个问题,您可以向其中添加一个随机数并对其进行编码,例如:
SELECT SHA2(CONCAT(UUID(), RAND()), 256);