シーケンスがPostgres(plpgsql)に存在するかどうかを確認するのコードを使用しようとしました。
シーケンスが存在しない場合に作成します。このコードを2回実行すると、例外が発生します。
シーケンス...はすでに存在します。
シーケンスが存在しない場合にのみシーケンスを作成するにはどうすればよいですか?
シーケンスが存在しない場合、メッセージは書き込まれず、エラーも発生しないため、シーケンスが存在する場合は毎回メッセージがログファイルに書き込まれるため、この質問の別の回答でストアドプロシージャを使用できません。
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;