Fremdschlüssel und Vererbung

Hallo,

zunächst meine Tabellen, sonst kann ich s nicht erklären wo mein Problem liegt:

-- Tabelle die Vererbt:	
CREATE TABLE allgemein
(
  a_id serial NOT NULL,
  name text,
  CONSTRAINT pk_allgmn PRIMARY KEY (a_id)
);

-- Tabelle erbt von allgemein:	
CREATE TABLE speziell
(
  s_id serial NOT NULL,
  spezi text,
  CONSTRAINT pk_spezi PRIMARY KEY (s_id)
)INHERITS(allgemein);

-- Tabelle hat Fremdschlüßel zu allgemein
CREATE TABLE eigenschaft
(
  e_id serial NOT NULL,
  a_id integer NOT NULL,
  name text,
  CONSTRAINT pk_eignschft PRIMARY KEY (e_id),
  CONSTRAINT fk_eigenschaft_allgemein FOREIGN KEY (a_id)
      REFERENCES allgemein (a_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
);

Datensätze werden nur in “speziell” eingefügt… Mache ich ein SELECT auf “allgemein” werden mir die “speziell”-Daten so wie es sein soll auch angezeigt. Nun will ich aber in “eigenschaften” Daten einfügen und bekomme Fehlermeldung, das die betreffende allgemein_ID (a_id) nicht vorhanden ist in “allgemein” und deshalb die Femdschlüsselbedingung verletzt wird. Komischerweise zählt die “allgemein_sequenz” ganz normal hoch, so wie sie soll…
Ich kann also keine Datensätze in “eigenschaften” anlegen, die mit Datensätzen verknüpft werden sollen, die ich über “speziell” in allgemein eingefügt habe. :astonished:
Vermutlich ist das ein Konfigurationsproblem? Weiß jemand was ich da machen muss/kann?

Vielen Dank im Vorraus!
beho

Ja, Vererbung und Constraints bzw. FKs funktionieren irknwie nicht, guggst Du auch hier:

Meiner Meinung nach verspricht PG hier mehr als es hält (bei Vererbung).
Möglicherweise bekommst Du das mit einem Redesign unter Verwendung von Views etc. besser hin.


Andreas

Nachtrag:

Hallo akretschmer,

danke für deine Antwort. Ich hab zwischenzeitlich auch ma n bisl recherchiert. Diese Funktionalität scheint es in der Tat nicht zu geben. Behuft eigentlich und reichlich irritierend, wird einem doch suggeriert die Daten seien in der Supertabelle wirklich vorhanden…

Grüße
beho