Невозможно изменить столбец для изменения типа данных, поскольку унаследованный столбец - PullRequest
0 голосов
/ 11 октября 2019

Я создал таблицу с именем trackings и множество секционирующих дочерних таблиц, они называются trackings_pt_....

Таблицы секционирования trackings_pt_... наследуются от таблицы trackings.

Я хотел бы изменить столбец id для всех них (родительских и дочерних таблиц) с integer на bigint.

Alter table trackings alter column id set data type bigint;

Я столкнулся с

ERROR: cannot alter inherited column "id"

Пожалуйста, помогите мне решить эту проблему.

Версия Postgres: PostgreSQL 11.2 на x86_64-apple-darwin17.7.0, скомпилированная Apple LLVM версии 10.0.0 (clang-1000.11.45.5)64-битный

1 Ответ

0 голосов
/ 11 октября 2019

Вы, должно быть, пытались изменить тип данных в дочерней таблице, поскольку он работает в родительской таблице:

CREATE TABLE inh_parent (id integer NOT NULL, val text NOT NULL);

CREATE TABLE inh_child () INHERITS (inh_parent);

CREATE TABLE inh_child2 (id integer NOT NULL) INHERITS (inh_parent);
NOTICE:  merging column "id" with inherited definition

ALTER TABLE inh_parent ALTER id TYPE bigint;  -- works

ALTER TABLE inh_child ALTER id TYPE int;      -- fails
ERROR:  cannot alter inherited column "id"

trackings должно наследоваться от другой таблицы. Запустите \d trackings в psql, чтобы проверить это.

...