在数据库迁移脚本 (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
最佳答案
你可以使用setval()
创建序列后:
CREATE SEQUENCE book_id_seq;
select setval('book_id_seq', (SELECT MAX(id) + 1 FROM book.book));
关于sql - 如何使用查询的起始值创建序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50411113/