我尝试使用Check if sequence exists in Postgres (plpgsql) 中的代码。
如果序列不存在,则创建序列。运行此代码两次会导致异常:
序列...已经存在。
仅当序列不存在时如何创建序列?
如果序列不存在,则不应写入任何消息并且不应发生错误,因此我无法在此问题的另一个答案中使用存储过程,因为如果序列存在,它每次都会将消息写入日志文件。
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;