From: | Robert Müller <muellerrobert(at)gmail(dot)com> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Problem mit Foreign Keys (und vererbten Tabellen?) |
Date: | 2006-03-07 12:59:58 |
Message-ID: | 9794185d0603070459i4723c17et@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Daniel Seichter | 2006-03-07 15:26:03 | Sequenz mit Ausnahmen |
Previous Message | Peter Eisentraut | 2006-03-07 09:19:55 | FFIS e.V. |