Re: Foreign key referencing subclasses.
От | Christof Glaser |
---|---|
Тема | Re: Foreign key referencing subclasses. |
Дата | |
Msg-id | 01032218164700.00782@pinguin обсуждение исходный текст |
Ответ на | Foreign key referencing subclasses. (Johannes Grødem <johs@copyleft.no>) |
Ответы |
Re: Foreign key referencing subclasses.
|
Список | 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
В списке pgsql-sql по дате отправления: