Inherit und Foreign Key Problem

Fragen und Probleme rund um die Abfragespache SQL.
Antworten
gf-wb
Neuer Benutzer
Beiträge: 1
Registriert: Di 21. Nov 2017, 12:09

Inherit und Foreign Key Problem

Beitrag von gf-wb »

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.

Code: Alles auswählen

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.

Code: Alles auswählen

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

castorp
Erfahrener Benutzer
Beiträge: 1182
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Inherit und Foreign Key Problem

Beitrag von castorp »

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

Im Handbuch ist das dokumentiert:
The Fine Manual hat geschrieben:A serious limitation of the inheritance feature is that indexes (including unique constraints) and foreign key constraints only apply to single tables, not to their inheritance children. This is true on both the referencing and referenced sides of a foreign key constraint
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

Antworten