Re: table inheritance and foreign key troubles - Mailing list pgsql-sql

From Christof Glaser
Subject Re: table inheritance and foreign key troubles
Date
Msg-id 20010911104915.9400813098@pinguin.gl.aser.de
Whole thread Raw
In response to Re: table inheritance and foreign key troubles  (Christof Glaser <gcg@gl.aser.de>)
Responses Re: table inheritance and foreign key troubles
List pgsql-sql
On Tuesday, 11. September 2001 11:12, I wrote before I thought:
> On Tuesday, 11. September 2001 10:04, Kevin Way wrote:
> > I'm having a little trouble with some inherited tables and a foreign
> > key.  Here's a simplified case, to show the trouble.
> >
> > CREATE TABLE node (
> >     node_id     SERIAL NOT NULL,
> >     name        TEXT NOT NULL,

Sorry, I missed that line:
> >     PRIMARY KEY (node_id)
> > );
> > -- works just fine
> >
> > CREATE TABLE users (
> >     email       TEXT NOT NULL
> > ) INHERITS (node);
> > -- so far so good....
> >
> > CREATE TABLE item (
> >     reason      TEXT NOT NULL,
> >     author_id   INT NOT NULL REFERENCES users (node_id)
> > ) INHERITS (node);
> > ERROR:  UNIQUE constraint matching given keys for referenced table
> > "users" not found
>
> That means, there is no UNIQUE constraing on users.node_id ;-)
> Since users inherits that field from node, just make node.node_id
> unique, or even a primary key.

PG cannot inherit primary keys or unique constraints, I recall now. So  
you need to ensure uniqueness for users.node_id:
CREATE TABLE users ( node_id   INT4 UNIQUE, ....
) INHERITS (node );

The constraints of users.node_id and node.node_id get merged magically.
This should work now on 7.1.3. I did test it this time.

Best regards,
Christof
--   gl.aser . software engineering . internet service      http://gl.aser.de/ . Planckstraße 7 . D-39104 Magdeburg


pgsql-sql by date:

Previous
From: Christof Glaser
Date:
Subject: Re: table inheritance and foreign key troubles
Next
From: Stephan Szabo
Date:
Subject: Re: table inheritance and foreign key troubles