В скрипте миграции базы данных (psql) я хочу создать последовательность, начиная с определенного значения, запрашиваемого из таблицы, например:
CREATE SEQUENCE book_id_seq START ( SELECT MAX(id) + 1 FROM book.book );
или пытался установить \set start (SELECT MAX(id) + 1 FROM book.book)
для использования переменной, например:
CREATE SEQUENCE book_id_seq START :'start';
Но использование \set
не интерпретировало запрос.
Другой способ установки переменной также не работал
start := SELECT MAX(id) + 1 FROM book.book;
выдал ошибку:
ERROR: syntax error at or near ":="
LINE 1: start := SELECT MAX(id) + 1 FROM book.book;
Выбор значения INTO также не помогает, потому что для доступа требуется другой запрос SELECT.
Использование статического значения работает нормально:
\set start 33
CREATE SEQUENCE book_id_seq START :'start'::int;
Как использовать динамическое начальное значение?
Postgres 9,6