嘿,我想創建一個隨機數。當這個隨機數已經存在時,我想一次又一次地調用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