如何生成唯一的随机数?

时间:2014-05-20 05:30:42

标签: mysql

有人可以告诉我一个很好的方法,可以在创建新记录时自动在mysql数据库表中放置一个唯一的随机数。

3 个答案:

答案 0 :(得分:1)

我会创建一个包含数字池的表:

Create Table pool (number int PRIMARY KEY AUTO_INCREMENT);
Insert Into pool (),(),(),(),(),(),(),(),…;

然后定义一个触发器,从该池中选择一个随机数:

CREATE TRIGGER pickrand BEFORE INSERT ON mytable 
FOR EACH ROW BEGIN
  DECLARE nr int;
  SET nr = (SELECT number FROM pool order by rand() limit 1);
  DELETE FROM pool WHERE number = nr;
  SET NEW.nr = nr;
END

为了避免并发问题,您必须在事务中运行查询。如果性能成为问题(因为order by rand()慢),您可以change the way to select a random record

答案 1 :(得分:0)

您最好的选择是Autoincrement

see here for syntax

也许是随机数 试试这个!

select FLOOR(RAND() * 401) + 100

修改

SELECT FLOOR(RAND() * 99999) AS sup_rand
FROM table
WHERE "sup_rand" NOT IN (SELECT sup_rand FROM table)
LIMIT 1

步骤:

1.Generate a random number
2.Check if its already present
3.if not continue use the number
4.Repeat

答案 2 :(得分:0)

unique random 的条件通常是冲突的。您可以轻松完成其中一个,但两者都很难,并且在测试要插入的新潜在数字时需要评估每一行。

符合条件的最佳方法是使用UUID function生成UUID。

更好的选择是重新评估您的设计并删除其中一个(独特的,随机的)标准。