Обсуждение: Foreign key to base table with rows in inherited tables
Foreign key to base table with rows in inherited tables
От
mikael.kjellstrom@_no_spam_flygtaxi.se (Mikael Kjellström)
Дата:
I've declared a foreign key in table FileId referencing the primary key in Datafile. Datafile in itself does'nt have any rows, but Reservationfile, inheriting from Datafile has. I can't insert a row in FileId because no row is found in Datafile: this is not what I expected. I've tried suffixing Datafile with an asterisk (even though that shouldn't be necessary in 7.1), but that's not valid syntax. I'm running 7.1.release4 on Debian Woody. Table definitions for clarity: -- Has no rows of its own declare Datafile ( datafileNr not null primary key ); -- This one has rows declare Reservationfile ( ) inherits(Datafile) ; declare FileId ( datafileNr not null references Datafile );
Yes, you cannot currently do this. Check past discussions on mailing lists for more details. Inheritance and constraints is pretty dodgy right now (for instance, Reservationfile.datafileNr is not unique). On Tue, 5 Jun 2001, Mikael Kjellstr�m wrote: > I've declared a foreign key in table FileId referencing the primary key in > Datafile. Datafile in itself does'nt have any rows, but Reservationfile, > inheriting from Datafile has. > > I can't insert a row in FileId because no row is found in Datafile: this is > not what I expected. > > I've tried suffixing Datafile with an asterisk (even though that shouldn't > be necessary in 7.1), but that's not valid syntax. > > I'm running 7.1.release4 on Debian Woody. > > Table definitions for clarity: > > -- Has no rows of its own > declare Datafile ( > datafileNr not null primary key > ); > -- This one has rows > declare Reservationfile ( > ) > inherits(Datafile) > ; > declare FileId ( > datafileNr not null > references Datafile > );