在数据库迁移脚本(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;
使用SELECT INTO语句并不能解决问题,因为访问需要另一个SELECT查询。
使用静态值可以正常工作:
\set start 33
CREATE SEQUENCE book_id_seq START :'start'::int;
如何使用动态起始值?
Postgres 9.6