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

Откуда:
Сообщений: 100
Всем доброго дня

Подскажите кто знает, как заменить в табличке колонку, определенную как serial на bigserial ?
обычным ALTER TABLE "bigtable" ALTER COLUMN rn TYPE bigserial USING rn::bigserial; не выходит, нет такого типа

подменить serial на bigint и потом вручную добавить последовательность тоже не выходит, так как на таблицу завязано много других объектов и править их все нереально

как это сделать проще всего, если уже есть куча данных в таблице и куча зависимостей?
26 май 21, 11:25    [22327320]     Ответить | Цитировать Сообщить модератору
 Re: изменить serial на bigserial  [new]
Melkij
Member

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

не существует типов serial или bigserial. Вот в смысле не существует. Это синтаксический сахар.
ALTER TABLE "bigtable" ALTER COLUMN rn TYPE bigint;
alter sequence bigtable_rn_seq as bigint; -- измените имя sequence если надо
26 май 21, 11:33    [22327326]     Ответить | Цитировать Сообщить модератору
 Re: изменить serial на bigserial  [new]
graywolf_too
Member

Откуда:
Сообщений: 100
Melkij,

это все так и есть, но
ALTER TABLE ТАБЛИЦА ALTER COLUMN rn TYPE bigint сделать не получится из-за множества зависимостей, представления в Postgre например не дают делать такие вещи, пока их не удалить ...

SQL Error [0A000]: ОШИБКА: изменить тип столбца, задействованного в представлении или правиле, нельзя

нет ли другого способа ?
26 май 21, 12:02    [22327344]     Ответить | Цитировать Сообщить модератору
 Re: изменить serial на bigserial  [new]
mefman
Member

Откуда:
Сообщений: 3470
graywolf_too,
Гугл в помощь. Это в общем - то типовой кейс. Зависит от версии СУБД(в более новых - проще)
26 май 21, 12:10    [22327354]     Ответить | Цитировать Сообщить модератору
 Re: изменить serial на bigserial  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1312
graywolf_too, а представления вам и так менять придётся из-за смены типа данных в них.

begiin;
drop view ....
alter table
create view ...
commit;
26 май 21, 12:25    [22327364]     Ответить | Цитировать Сообщить модератору
 Re: изменить serial на bigserial  [new]
graywolf_too
Member

Откуда:
Сообщений: 100
Melkij
graywolf_too, а представления вам и так менять придётся из-за смены типа данных в них.

begiin;
drop view ....
alter table
create view ...
commit;


очень много придется менять, но если делать нечего, то придется идти этим путем :(
26 май 21, 13:05    [22327402]     Ответить | Цитировать Сообщить модератору
 Re: изменить serial на bigserial  [new]
бабушкин зайчик
Member

Откуда: сетевой
Сообщений: 210
https://www.google.com/search?channel=fs&client=ubuntu&q=SQL Error [0A000]: ОШИБКА: изменить тип столбца, задействованного в представлении или правиле, нельзя
26 май 21, 13:54    [22327445]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить