【发布时间】:2011-06-09 00:52:02
【问题描述】:
我想为发票生成客户 ID,因此出于显而易见的原因不想从 1 开始计数。在 MySQL 中你能生成一个唯一的随机数吗?
我知道 RAND() 函数,但它不能保证唯一性。什么是正确的方法?
不起作用:
INSERT INTO test (number) VALUES (FLOOR(0 + (RAND() * 9999999999)));
PS:服务器端我使用 PHP 并使用 FPDF 生成发票。
【问题讨论】:
-
这里明显的原因是什么?如果您猜到下一个 id,发票是否会以某种方式可见,或者以某种方式被欺骗?如果是这种情况,您有不同的问题,需要确保查看发票的任何人都有权这样做。取而代之的是,我会使用 UUID 函数(请参阅dev.mysql.com/doc/refman/5.0/en/…),尽管这看起来有点矫枉过正。
-
不,实际上我没有考虑与欺骗等有关的任何事情。更多的是该公司是一家初创公司,他们不希望透露您是他们的第一个客户 :-)