Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Пропадает автоинкремент после переименования сиквенса  [new]
electrod
Member

Откуда: Москва
Сообщений: 113
Всем привет .

Подскажите, может кто-то сталкивался с проблемой

Postgres 10.4.1

Делаем ALTER SEQUENCE xxx RENAME TO yyy;

После переименования, значение из столбца default из таблицы, которая создавалась как serial пропадает:
было - nextval('xxx'::regclass)
стало - пусто

Есть ли алгоритм как правильно переименовать сиквенсы для такого случая?
27 окт 20, 21:09    [22221744]     Ответить | Цитировать Сообщить модератору
 Re: Пропадает автоинкремент после переименования сиквенса  [new]
vyegorov
Member

Откуда: Рига
Сообщений: 1212
electrod,

Я бы просто после переименования сделал бы `ALTER TABLE tab ALTER col SET DEFAULT nextval('newseqname');`
И заодно `ALTER SEQUENCE newseqname OWNED BY tab.col;`
27 окт 20, 21:19    [22221751]     Ответить | Цитировать Сообщить модератору
 Re: Пропадает автоинкремент после переименования сиквенса  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1181
electrod,

а воспроизвести можете?

postgres=#  begin;
BEGIN
postgres=# create table a (i serial);
CREATE TABLE
postgres=# \d a
                            Table "public.a"
 Column |  Type   | Collation | Nullable |           Default            
--------+---------+-----------+----------+------------------------------
 i      | integer |           | not null | nextval('a_i_seq'::regclass)

postgres=# alter sequence a_i_seq rename to a_i_seq_new;
ALTER SEQUENCE
postgres=# \d a
                              Table "public.a"
 Column |  Type   | Collation | Nullable |             Default              
--------+---------+-----------+----------+----------------------------------
 i      | integer |           | not null | nextval('a_i_seq_new'::regclass)


Ну и версии postgresql 10.4.1 не существует.
28 окт 20, 12:04    [22222084]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить