我希望能够生成一个非常大的序列号,直到20个字节。
内置序列类型允许的最大长度为8个字节(bigserial)。
所以符合我目标的类型是DECIMAL。
CREATE TABLE public.ca_params
(
serial DECIMAL
);
CREATE OR REPLACE FUNCTION generate_serial()
RETURNS NUMERIC AS $$
DECLARE serial_ NUMERIC;
BEGIN
select serial+1 into serial_ from ca_params
for update;
update ca_params set serial=serial_;
RETURN serial_;
END; $$ LANGUAGE plpgsql
我的问题是我是否有多个进程正在运行
select generate_serial()
select子句总是会返回一个唯一的更新值吗?