0

我想执行一个随机函数rand(100001, 1000000),它必须生成随机数s,它必须在两个不同的领域中是唯一的。

为了清楚地解释它,我有两个表A,一个表有状态记录,另一个SubmittedApproved只有B状态记录Rejected

我有一个ackno在表中调用的字段A以及B与两个表字段相比需要随机且唯一的表。

这可能吗 ?任何人都可以给出解决方案吗?

4

1 回答 1

0

随机数不会是唯一的。在这种情况下,您有 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);
于 2013-01-21T09:10:33.800 回答