Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Problem mit Foreign Keys (und vererbten Tabellen?)



Hallo!
Ich habe ein Problem mit den Foreign Keys in folgender Tabellenkonstellation:

SET SEARCH_PATH TO test;

-- Struktur
CREATE SEQUENCE object_obj_id_seq;

CREATE TABLE object
(
  obj_id int4 NOT NULL DEFAULT nextval('object_obj_id_seq'::text),
  CONSTRAINT object_pkey
    PRIMARY KEY (obj_id)
);

CREATE TABLE obj_obj_rel
(
  parent_id int4 NOT NULL,
  child_id int4 NOT NULL,
  CONSTRAINT obj_obj_rel_pkey
    PRIMARY KEY (parent_id, child_id),
  CONSTRAINT fk_child_id_exists_in_object
    FOREIGN KEY (child_id) REFERENCES object (obj_id)
    ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT fk_parent_id_exists_in_object
    FOREIGN KEY (parent_id) REFERENCES object (obj_id)
    ON UPDATE CASCADE ON DELETE CASCADE
);

CREATE TABLE person
(
  last_name varchar(40) NOT NULL DEFAULT ''
) INHERITS (object);

CREATE TABLE contactperson
(
  position varchar(40) NOT NULL DEFAULT ''
) INHERITS (object);

-- Daten
INSERT INTO person(last_name) values('Müller');
INSERT INTO contactperson(position) values('Sklave');


Wenn ich jetzt ein

insert into obj_obj_rel(parent_id, child_id) values (2,1);

machen will bekomme ich folgenden Fehler:

FEHLER:  Einfügen oder Aktualisieren in Tabelle »obj_obj_rel« verletzt
Fremdschlüssel-Constraint »fk_child_id_exists_in_object«
DETAIL:  Schlüssel (child_id)=(1) ist nicht in Tabelle »object« vorhanden.

Für mich ist doch aber der Schlüssel 1 sehr wohl in object vorhanden:
select * from object where obj_id = 1;
ergibt die gesuchte zeile;

Was also habe ich falsch gemacht bzw wo ist mein Denkfehler?

Mit freundlichen Gruessen
Robert



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group