Héritage et REFERENCES

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)

Responses

Browse pgsql-fr-generale by date

  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