From: | "Oliver Elphick" <olly(at)lfix(dot)co(dot)uk> |
---|---|
To: | BOUCHPAN-LERUST-JUERY Lionel <bouchpan(at)ie2(dot)u-psud(dot)fr> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: General ISA and Foreign Key |
Date: | 2001-05-07 21:05:18 |
Message-ID: | 200105072106.f47L5ciW014707@linda.lfix.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
BOUCHPAN-LERUST-JUERY Lionel wrote:
>In SQL I have the following tables
>
>CREATE TABLE film(
>VisaExploitation INTEGER NOT NULL,
>DureeTournage INTEGER NOT NULL,
>Titre VARCHAR( 50 ),
>
>PRIMARY KEY ( VisaExploitation ) );
>CREATE TABLE filmHistorique(
>NbCostume INTEGER
>) INHERITS ( film );
>
>create table filmDocumentaire(
> ) INHERITS ( film );
>
>I have a weak entity:
>
>CREATE TABLE copie(
>NumCopie INTEGER NOT NULL,
>VisaExploitation INTEGER NOT NULL,
>PRIMARY KEY( VisaExploitation, NumCopie ),
>FOREIGN KEY( VisaExploitation ) REFERENCES film ON DELETE CASCADE );
>
>The problem is I have to be able to have the constraint on
>both 2 and 3 and I can't figure how to implement this.
You can't do this at present, because there is no support for a foreign
key constraint on an inheritance hierarchy (it is a major defect with the
current implementation of inheritance).
Although inheritance is conceptually correct, the lack of implementation
suggests an alternative course:
"film" should contain a row for every film and "filmHistorique" and
"filmDocumentaire" should have foreign key constraints on "film". You
could maintain the contents of "film" by triggers on the other two tables.
--
Oliver Elphick Oliver(dot)Elphick(at)lfix(dot)co(dot)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
========================================
"Dearly beloved, avenge not yourselves, but rather give
place unto wrath. For it is written, Vengeance is
mine; I will repay, saith the Lord. Therefore if thine
enemy hunger, feed him; if he thirst, give him drink;
for in so doing thou shalt heap coals of fire on his
head. Be not overcome of evil, but overcome evil with
good." Romans 12:19-21
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2001-05-08 04:55:59 | Re: RI permission problem |
Previous Message | Peter Eisentraut | 2001-05-07 19:36:47 | Re: RI permission problem |