我在我的PostgreSQL数据库中有几个具有几个公共列的表。我认为如果将这些公共列移入新表并使表从这个新表继承,这将是一个好主意。例如:修改表的模式,使其从另一个表继承而不重新创建表或重新插入数据
create table foo_bar (
code varchar(9) primary key,
name varchar,
bar integer
);
重构后:
create table foo (
code varchar(9) primary key,
name varchar
);
create table foo_bar (
bar integer
) inherits (foo);
的问题是,我有很多的foo_bar
数据,以及许多意见认为参考这个表。
是否可以更改foo_bar
的定义以实现上述更改而不丢弃表中的数据?
哈!我不认为这会很容易。我测试了它,它工作。唯一奇怪的是现在,如果我转储数据库,它显式地显示'foo_bar'定义中的继承列。我不应该看到他们。但是他们真的被继承了,如果我试图从'foo_bar'丢弃这些列,我得到一个错误,说我不能让它们被继承。谢谢! – piokuc