From: | Stephane Bortzmeyer <bortzmeyer(at)nic(dot)fr> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Héritage et REFERENCES |
Date: | 2005-09-20 10:41:56 |
Message-ID: | 20050920104156.GB7333@nic.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
J'essaie de gérer une base de matériels ("Foobar") qui peuvent
appartenir, soit à une personne, soit à un groupe.
Je mets donc une référence vers une table Things, dont héritent Users
et groups.
J'ai testé, mais ça ne marche pas. C'est rigolo, l'héritage, mais
déroutant. Les tables sont crées mais je ne peux jamais écrire
(PostgreSQL 7.4 ou 8.0) et le SGBD prétend que l'id n'existe pas (mais
il existe, SELECT le montre) :
essais=> CREATE TABLE Things (id SERIAL UNIQUE NOT NULL);
NOTICE: CREATE TABLE will create implicit sequence "things_id_seq" for serial column "things.id"
NOTICE: CREATE TABLE / UNIQUE will create implicit index "things_id_key" for table "things"
CREATE TABLE
essais=> CREATE TABLE Users (name TEXT) INHERITS (Things);
CREATE TABLE
essais=> CREATE TABLE Groups (name TEXT) INHERITS (Things);
CREATE TABLE
essais=> CREATE TABLE Foobar (name TEXT, id INTEGER REFERENCES Things(id));
CREATE TABLE
essais=>
essais=> INSERT INTO Users (name) VALUES ('Bortzmeyer');
INSERT 42132 1
essais=> INSERT INTO Groups (name) VALUES ('R&D');
INSERT 42133 1
essais=> SELECT * FROM Things;
id
----
id
----
1
2
(2 rows)
essais=> INSERT INTO Foobar VALUES ('computer', 2);
ERROR: insert or update on table "foobar" violates foreign key constraint "foobar_id_fkey"
DETAIL: Key (id)=(2) is not present in table "things".
essais=> INSERT INTO Foobar VALUES ('computer', 1);
ERROR: insert or update on table "foobar" violates foreign key constraint "foobar_id_fkey"
DETAIL: Key (id)=(1) is not present in table "things".
essais=> \d things
Table "public.things"
Column | Type | Modifiers
--------+---------+--------------------------------------------------------
id | integer | not null default nextval('public.things_id_seq'::text)
Indexes:
"things_id_key" UNIQUE, btree (id)
From | Date | Subject | |
---|---|---|---|
Next Message | Jean-Christophe Arnu | 2005-09-20 12:30:17 | Re: Héritage et REFEREN |
Previous Message | Francis Leboutte | 2005-09-20 08:52:20 | template1 pas accessible |