2015-01-22 3 views
0

Я следующий PostgreSQL создать скриптОшибки создание последовательности В PostgreSQL

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

этого doestnt создать последовательность возникающей ошибка folloeing:

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

ответ

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

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)); 
Смежные вопросы