2016-11-17 6 views
0

Я хочу изменить значение приращения для всех моих столбцов, в которых используются идентификаторы секвенсора. Как мне это сделать?update increment of serial field из нескольких записей в postgres

Я попытался следующие 2 подхода, оба потерпели неудачу:

UPDATE information_schema.sequences SET increment=1; 

Это не работает, потому что information_schema.sequences это мнение.

Я также попытался использовать ALTER SEQUENCE, добавив FROM в конце, как:

ALTER SEQUENCE A.sequence_name INCREMENT BY 2 FROM (SELECT * FROM information_schema.sequences) AS A 

Но я получаю ошибку синтаксиса.

Как это сделать?

ответ

0

Попробуйте использовать setval из docs

ИЛИ

ALTER SEQUENCE... RESTART WITH..., как описано here

EDITED ДВАЖДЫ

Sample, как изменить все последовательности в принадлежащей схеме:

do 
$$ 
declare 
i record; 
begin 
for i in (select * from information_schema.sequences) loop 
execute $e$ALTER SEQUENCE $e$||i.sequence_name||$e$ INCREMENT BY 2$e$; 
end loop; 
end; 
$$ 
; 
DO 
+0

setval не меняет приращение, только текущее значение ... ALTER SEQUENCE не принимает значения из SELECT ... – alface

+0

да, но я не уверен, чего вы хотите достичь. –

+0

Извините, я отредактировал мой вопрос, чтобы быть более понятным. – alface

 Смежные вопросы

  • Нет связанных вопросов^_^