w.k*_*w.k 4 sql postgresql psql
在数据库迁移脚本(psql)中,我想从表中查询的特定值开始创建序列,例如:
CREATE SEQUENCE book_id_seq START ( SELECT MAX(id) + 1 FROM book.book );
Run Code Online (Sandbox Code Playgroud)
或尝试设置\set start (SELECT MAX(id) + 1 FROM book.book)为使用变量,例如:
CREATE SEQUENCE book_id_seq START :'start';
Run Code Online (Sandbox Code Playgroud)
但使用\set并没有解释查询。
设置变量的另一种方法也不起作用
start := SELECT MAX(id) + 1 FROM book.book;
Run Code Online (Sandbox Code Playgroud)
给出了错误:
ERROR: syntax error at or near ":="
LINE 1: start := SELECT MAX(id) + 1 FROM book.book;
Run Code Online (Sandbox Code Playgroud)
选择值 INTO 也没有帮助,因为访问需要另一个 SELECT 查询。
使用静态值效果很好:
\set start 33
CREATE SEQUENCE book_id_seq START :'start'::int;
Run Code Online (Sandbox Code Playgroud)
如何使用动态起始值?
Postgres 9.6
小智 9
setval()创建序列后可以使用:
CREATE SEQUENCE book_id_seq;
select setval('book_id_seq', (SELECT MAX(id) + 1 FROM book.book));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4604 次 |
| 最近记录: |