Re: Switching identity column to serial

Поиск
Список
Период
Сортировка
От Peter Eisentraut
Тема Re: Switching identity column to serial
Дата
Msg-id 87c8d1ad-e220-11db-8e3e-d66226feda74@enterprisedb.com
обсуждение исходный текст
Ответ на Re: Switching identity column to serial  (Erik Wienhold <ewie@ewie.name>)
Список pgsql-general
On 04.02.23 21:55, Erik Wienhold wrote:
>>   Why doesn't this work?
>>   BEGIN;
>>   DROP SEQUENCE t_id;

[This won't work, you need to use ALTER TABLE / DROP IDENTITY.]

>>   CREATE SEQUENCE new_t_id_seq AS INTEGER OWNED BY t.id;
>>   ALTER SEQUENCE new_t_id_seq OWNER TO new_owner;
>>   SELECT setval('new_t_id', (SELECT MAX(id) FROM t));
>>   SELECT nextval('new_t_id');
>>   COMMIT;
> This should work but I want to preserve the existing sequence instead of
> re-creating it with the same properties.  That's why I was looking for a
> shortcut (also code golfing and sheer curiosity).

This is possible in principle, by implementing the inverse of the 
"Upgrading" recipe from 
<https://www.2ndquadrant.com/en/blog/postgresql-10-identity-columns/>. 
But if you don't want to figure that out, I think dropping and 
recreating the sequences as suggested here seems the best solution.




В списке pgsql-general по дате отправления:

Предыдущее
От: Laurenz Albe
Дата:
Сообщение: Re: How do a user-defined function that returns a table executes a query?
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: Get the sequence name corresponding to a GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY column