在PostgreSQL中创建序列时出错

时间:2015-01-22 06:41:56

标签: postgresql sequence

我有以下PostgreSQL创建脚本

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

这个doestnt创建序列产生以下错误:

  

错误:语法错误在或附近“(”LINE 1:创建序列test_1   开始(选择1)

用于测试目的我按照脚本进行了测试

create sequence test start 1 -- this works

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

如何克服这个?

注意:PostgreSQL 9.2

2 个答案:

答案 0 :(得分:3)

您不能将起始值指定为子选择。但是,您可以使用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));

答案 1 :(得分:0)

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