我创建了一个名为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
答案 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
进行检查。