Inherit und Foreign Key Problem

Hallo!
Wir haben momentan im Rahmen unseres Studiums das Thema Datenbanken (Postgress SQL) und dort auch ein kleines Projekt aufbekommen.

Dabei sind wir auf ein Problem gestoßen, dass auf Anhieb auch die zuständigen Dozenten nicht lösen konnten.

Bevor ich lange versuche das Problem verbal zu erklären, schreibe ich hier den SQL Code.

create schema "test";
set search_path to "test";

create table stud (
sid bigint,
constraint pk primary key (sid)
);

create table stud_ver (
vname varchar(100) ) inherits (stud);

alter table stud_ver add constraint pk_v primary key (sid);

create table liste (
id int primary key,
student bigint,
constraint fk foreign key (student) references stud
);



-- befüllen

insert into stud values
(1),(2),('3');

insert into stud_ver values
(6,'tom'),
('4', 'Otto');

Das klappt soweit. Das Problem tritt auf, wenn wir die Tabelle “liste” befüllen wollen.

insert into liste values 
(1, 1),
(2,6),
(3,'4');

Fehlermeldung:

/*FEHLER: Einfügen oder Aktualisieren in Tabelle »liste« verletzt Fremdschlüssel-Constraint »fk«
DETAIL: Schlüssel (student)=(6) ist nicht in Tabelle »stud« vorhanden.

********** Fehler **********

FEHLER: Einfügen oder Aktualisieren in Tabelle »liste« verletzt Fremdschlüssel-Constraint »fk«
SQL Status:23503
Detail:Schlüssel (student)=(6) ist nicht in Tabelle »stud« vorhanden.*/

Wenn wir “Select *” auf die Tabelle “stud” loslassen, gibt es den Studenten mit der SID 6.


Ich hoffe, ihr versteht mich.

Schon mal vielen Dank für Eure Hilfe!

Thomas

Das ist eine Einschränkung der Vererbung (und auch der in v10 neuen Partitionierung).

Im Handbuch ist das dokumentiert: