在 PostgreSQL 中创建序列时出错

Error Creating Sequence In PostgreSQL

我有以下 PostgreSQL 创建脚本

CREATE SEQUENCE seq_tbl_ct_yr2_id  START (select max(ct_tran_id)+1 tranid from tbl_ct);

这不会创建出现以下错误的序列:

ERROR: syntax error at or near "(" LINE 1: create sequence test_1 start (select 1)

出于测试目的,我测试了以下脚本

create sequence test start 1 -- this works

create sequence test_1 start (select 1) -- this doesnt work 

如何克服这个问题??

注:PostgreSQL 9.2

DO
$$
declare
start_id int;
begin
select max(ct_tran_id)+1 from tbl_ct  into start_id;
execute 'CREATE SEQUENCE seq_tbl_ct_yr2_id  START '||start_id||'';
end;
$$

使用

进行测试
select nextval('seq_tbl_ct_yr2_id')

sql-do

您不能将起始值指定为子select。但是,您可以使用 setval()

将序列设置为特定值
CREATE SEQUENCE seq_tbl_ct_yr2_id;
select setval('seq_tbl_ct_yr2_id', (select max(ct_tran_id)+1 tranid from  tbl_ct));