嘿,我想创建一个随机数。当这个随机数已经存在时,我想一次又一次地调用randomnumber
函数。在这种情况下,我需要返回CASE WHEN语句中的randomnumber
函数。 它不起作用。仍然会出现该号码已经存在的错误。我想创建一个随机数为唯一的列:当无并发运行Postgres - 返回功能的情况下,当声明
CREATE OR REPLACE FUNCTION getrandomnumber(integer, integer)
RETURNS integer AS
$BODY$
DECLARE
start_int ALIAS FOR $1;
end_int ALIAS FOR $2;
name int;
BEGIN
name = trunc(random() * (end_int-start_int) + start_int);
CASE WHEN (select count(alias) from drivers where alias = name limit 1) = 0
THEN RETURN name;
ELSE RETURN getrandomnumber(start_int, end_int);
END CASE;
END;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100;
ALTER FUNCTION getrandomnumber(integer, integer)
OWNER TO postgres;
显示表结构和样本数据 –
表包含一个id,一个名称和一个别名。 Id是通过Sequenzce创建的,name是一个varchar,别名是1到1000之间的bigint。这个别名我想通过函数创建。别名列是唯一的。 – Pauli