我试着使用Check if sequence exists in Postgres (plpgsql)的代码.
如果序列不存在,则创建序列.运行此代码两次会导致异常:
序列已经存在了.
如何仅在序列不存在时创建序列?
如果序列不存在,则不应写入任何消息,也不应发生任何错误,因此我不能在回答这个问题的另一个答案中使用存储过程,因为如果序列存在,它每次都会将消息写入日志(log)文件.
do $$
begin
SET search_path = '';
IF not EXISTS (SELECT * FROM pg_class
WHERE relkind = 'S'
AND oid::regclass::text = 'firma1.' || quote_ident('myseq'))
THEN
SET search_path = firma1,public;
create sequence myseq;
END IF;
SET search_path = firma1,public;
end$$;
select nextval('myseq')::int as nr;