无法更改列以更改数据类型,因为继承的列

时间:2019-10-11 08:18:38

标签: postgresql database-partitioning

我创建了一个名为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版本: 由Apple LLVM版本10.0.0(clang-1000.11.45.5),64位编译的x86_64-apple-darwin17.7.0上的PostgreSQL 11.2

1 个答案:

答案 0 :(得分:0)

您必须尝试更改子表上的数据类型,因为它适用于父表:

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进行检查。