我有以下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
答案 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')