在 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')
您不能将起始值指定为子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));
我有以下 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')
您不能将起始值指定为子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));