Thread: Altering metadata to add inheritance

Altering metadata to add inheritance

From
jboes@nexcerpt.com (Jeff Boes)
Date:
As an experiement, I want to turn a number of identically structured
tables into "child" tables of a template.  That is, I want to do
something like:

alter table foo_01 rename to foo_01_old;
create table foo_01 () inherits (foo_template);
insert into foo_01 select * from foo_01_old;
drop table foo_01_old;

a whole lotta times, for different values of 'foo_01'.  I suspect
there's a way to do this directly in the pg_class table.  Does anyone
have a tried and safe approach?

Re: Altering metadata to add inheritance

From
Tom Lane
Date:
jboes@nexcerpt.com (Jeff Boes) writes:
> As an experiement, I want to turn a number of identically structured
> tables into "child" tables of a template. ... I suspect
> there's a way to do this directly in the pg_class table.

pg_class doesn't show inheritance.  I *think* all you'd have to do is
insert rows into pg_inherits, see

http://developer.postgresql.org/docs/postgres/catalog-pg-inherits.html

Oh, and you'd have to set pg_class.relhassubclass true for the parent
table.

But I've not tried to do this by hand myself.  Better experiment on
a test database ;-)

            regards, tom lane