Подтвердить что ты не робот

Postgresql - использование подзапросов с выражениями альтернативной последовательности

Мой вопрос прост.

Можно ли использовать подзапросы в альтернативных выражениях в PostgreSQL?

Я хочу изменить значение последовательности на основе значения столбца первичного ключа.

Я попытался использовать следующее выражение, но оно не будет выполнено.

alter sequence public.sequenceX restart with (выберите max (table_id) +1 из таблицы)

Заранее спасибо

4b9b3361

Ответ 1

Я не верю, что вы можете сделать это так, но вы должны иметь возможность использовать направление функции setval, что и делает alter.

select setval('sequenceX', (select max(table_id)+1 from table), false)

Значение false приведет к тому, что следующий порядковый номер вернет то, что указано.

Ответ 2

Кроме того, если у вас есть смешанные имена объектов случая, и вы получаете ошибку, подобную этой:

ERROR: relation "public.mytable_id_seq" does not exist

... нужна следующая версия с использованием regclass:

select setval('"public"."MyTable_Id_seq"'::regclass, (select MAX("Id") FROM "public"."MyTable"))