即时生成唯一标识

问题描述:

我使用此SQL查询来创建对列唯一的新标识。我想很久以前我从另一个StackOverlow的帖子中得到了这个想法。但它不起作用,我不知道为什么。我将生成100-200个ID(每个数据库添加到数据库中),并且有时候会有重复结果。即时生成唯一标识

有没有什么明显的可以关闭此查询?

SELECT FLOOR(RAND() * 99999) AS random_num 
FROM listings 
WHERE 'random_num' NOT IN (SELECT identifier FROM listings) 
LIMIT 1 
+0

为什么你就不能使用自动增量字段? – maSTAShuFu

+0

这是一种情况,我不希望下一行很容易猜到 –

我想你打算:

SELECT l.* 
FROM (SELECT FLOOR(RAND() * 99999) AS random_num 
     FROM listings l 
    ) l 
WHERE random_num NOT IN (SELECT identifier FROM listings) 
LIMIT 1 

您的代码具有'random_num'这是一个字符串,不可能匹配的数字标识符。我想你应该只使用auto_increment

+0

是的,那就是票。简单的错误,但我只是看不到它 –

PostgreSQL的,你可以使用该技术从该网站:id-generator-for-postgresql