Thread: Multiple Inheritance
Hi everyone, I have found out that Postgres provides inheritance between tables. I wonder if 'multiple inheritance' can be implemented. I mean if a child table may have more than one parent table. And if this is possible what sql syntax does it follow. Thankyou in advance. Stay Safe & Happy :* TankGirl
tankgirl@worldonline.es wrote: > Hi everyone, > > I have found out that Postgres provides inheritance between tables. > > I wonder if 'multiple inheritance' can be implemented. I mean if >a child table may have more than one parent table. > And if this is possible what sql syntax does it follow. It's in the man page for create_table: CREATE [ TEMPORARY | TEMP ] TABLE table_name ( { column_name type [ column_constraint [ ... ] ] | table_constraint } [, ... ] ) [ INHERITS ( inherited_table [, ... ] ) ] ... inherited_table The optional INHERITS clause specifies a list of table names from which this table automatically inherits all fields. If any inherited field name appears more than once, Postgres reports an error. Postgres automatically allows the created table to inherit functions on tables above it in the inheri tance hierarchy. -- Oliver Elphick Oliver.Elphick@lfix.co.uk Isle of Wight http://www.lfix.co.uk/oliver PGP: 1024R/32B8FAA1: 97 EA 1D 47 72 3F 28 47 6B 7E 39 CC 56 E4 C1 47 GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C ======================================== "Rejoice with them that do rejoice, and weep with them that weep." Romans 12:15
"Oliver Elphick" <olly@lfix.co.uk> writes: > It's in the man page for create_table: > inherited_table > The optional INHERITS clause specifies a list of > table names from which this table automatically > inherits all fields. If any inherited field name > appears more than once, Postgres reports an error. Hmm, this bit of the documentation is wrong: regression=# create table p1 (f1 int, f2 float); CREATE regression=# create table p2 (f1 int, f2 float, f3 int); CREATE regression=# create table c1(f4 int) inherits (p1,p2); NOTICE: CREATE TABLE: merging multiple inherited definitions of attribute "f1" NOTICE: CREATE TABLE: merging multiple inherited definitions of attribute "f2" CREATE regression=# The NOTICE is new in 7.1, but prior versions did this sort of merging as well. Will fix the docs. regards, tom lane