【发布时间】:2012-11-25 00:42:01
【问题描述】:
我尝试使用来自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;
【问题讨论】:
-
If sequence does not exist .. if sequence exists.请说明您在每种情况下要做什么。 -
Postgres 9.5 将有
create sequence if not existspostgresql.org/docs/9.5/static/sql-createsequence.html
标签: sql postgresql database-design plpgsql postgresql-9.2