![](/img/trans.png)
[英]How to generate a unique random number in a specific format and check that it is not used?
[英]How to Generate unique random number?
有人可以告诉我一种创建新记录时自动在mysql数据库表中放置唯一随机数的好方法。
我将创建一个带有数字池的表:
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()
较慢),则可以更改选择随机记录的方式 。
最好的选择是Autoincrement
列
也许对于随机数试试这个!
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.