From: | Christof Glaser <gcg(at)gl(dot)aser(dot)de> |
---|---|
To: | Johannes Grødem <johs(at)copyleft(dot)no>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Foreign key referencing subclasses. |
Date: | 2001-03-22 17:16:47 |
Message-ID: | 01032218164700.00782@pinguin |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi Johannes,
On Thursday, 22. March 2001 15:18, Johannes Grødem wrote:
> Hi,
>
> it seems I can't have a foreign key that references some subclass.
> Postgres says it can't figure out what its primary key is. The
> primary key is defined in the superclass.
>
> I have something like this:
>
> CREATE TABLE resource_record(
> rrid SERIAL
> -- etc.
> );
There is no primary key for this table. Just write PRIMARY KEY after
SERIAL.
> CREATE TABLE soa_record(
> -- blah, blah
> ) INHERITS(resource_record);
>
> CREATE TABLE domain(
> -- ...
> soaid REFERENCES soa_record -- *
> );
>
>
> * = This doesn't work. I can reference resource_record here, but I
> can not reference soa_record that way. Referencing resource_record*
> doesn't work either.
Primary keys as well as other indexes are not inherited, unfortunately.
You should create the indexes for any subclass manually, like:
CREATE INDEX soa_record_pkey ON soa_record ( rrid );
You could also state the referenced field name (you actually have to,
if you happen to reference to a non-primary key field):
CREATE TABLE ...
soaid int4 REFERENCES soa_record ( rrid )
^^^^
Note that SERIAL is actually int4 with automagically created sequences.
You can't leave out the column's type for references.
And note also that referencing to a superclass* (including subclasses)
does not work for 7.0.x. I think it changes with 7.1 but I'm not sure.
You could create your own triggers, though.
Hope that helps,
Christof.
--
gl.aser . software engineering . internet service
http://gl.aser.de/ . Planckstraße 7 . D-39104 Magdeburg
Tel. +49.391.7 44 77 10 . Fax +49.391.7 44 77 13 . Mobil 0177.77 92 84 3
From | Date | Subject | |
---|---|---|---|
Next Message | Jason Earl | 2001-03-22 17:27:26 | Re: Birthday search. |
Previous Message | Bruno Wolff III | 2001-03-22 15:19:36 | Re: String REPLACE function |