Re: [QUESTIONS] using composite types
Peter T Mount <postgresdev@maidast.demon.co.uk>
From: Peter T Mount <postgresdev@maidast.demon.co.uk>
To: "Thomas G. Lockhart" <lockhart@alumni.caltech.edu>
Cc: Brian Grossman <brian@softhome.net>, pgsql-questions@postgresql.org, Postgres Hackers List <hackers@postgresql.org>
Date: 1998-03-15T13:16:52Z
Lists: pgsql-hackers
On Fri, 13 Mar 1998, Thomas G. Lockhart wrote: > > How can I use composite types? > > If I create two tables like this: > > create table A ( a int, b int); > > create table D ( a A, b int); > > I would expect to be able to > > insert into D (a.a, a.b, b) values (1,2,3); > > and > > select a.a, a.b, b from D; > > That doesn't work, at least not with postgresql 6.3. Is that the way > > it's supposed to work? What is the proper way to do it? I've just tried it here, and it seems that the value to insert into D is the OID of a row in table A. > I'm not sure if this is supported. The old tutorial does not have an > example exactly like this (at least that I could find), but it seems > like it _should_ work, and the backend accepts the syntax. > > What you want to do can probably be accomplished with inheritance, but > that only seems to work if you have unique names for more of your > fields: > > create table A ( a int, b int); > create table D ( c int) inherits (A); > > But, if you try > > create table D ( b int) inherits (A); > > then the new column in D gets lost without warning! This would give a table based on the parent table, but I think he was trying to use table D to refer to values in table A _as_ a type. [I may be wrong here, but that's what it looks like] -- Peter T Mount petermount@earthling.net or pmount@maidast.demon.co.uk Main Homepage: http://www.demon.co.uk/finder Work Homepage: http://www.maidstone.gov.uk Work EMail: peter@maidstone.gov.uk