Я попытался использовать код из Проверить, существует ли последовательность в 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;