У меня есть следующий сценарий создания PostgreSQL
CREATE SEQUENCE seq_tbl_ct_yr2_id START (select max(ct_tran_id)+1 tranid from tbl_ct);
Это не создает последовательность, возникающую в результате следующей ошибки:
ОШИБКА: синтаксическая ошибка около "(" СТРОКА 1: создание последовательности test_1 start (выберите 1)
Для тестовых целей я тестировал следующие скрипты
create sequence test start 1 -- this works
create sequence test_1 start (select 1) -- this doesnt work
Как это побороть ??
Примечание: PostgreSQL 9.2
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')
Вы не можете указать начальное значение в качестве подвыбора. Однако вы можете установить для последовательности конкретное значение с помощью 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
PostgreSQL — это система управления реляционными базами данных (RDBMS) с открытым исходным кодом, доступная для всех основных платформ, включая Linux, UNIX, Windows и OS X. Задавая вопросы, указывайте свою версию Postgres. Обратитесь к dba.stackexchange.com для вопросов, касающихся администрирования или дополнительных функций.