From: | Stephane Bortzmeyer <bortzmeyer(at)nic(dot)fr> |
---|---|
To: | Jonathan Ballet <jon(at)multani(dot)info> |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: Problème de clé é |
Date: | 2005-12-02 10:45:43 |
Message-ID: | 20051202104543.GA18581@nic.fr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
On Wed, Nov 30, 2005 at 11:31:13PM +0100,
Jonathan Ballet <jon(at)multani(dot)info> wrote
a message of 32 lines which said:
> une table B qui dérive de A
Pas la peine d'aller plus loin : l'héritage en PostgreSQL est *très*
limité (au point que je ne l'utiliserai plus) et notamment les
contraints d'intégrité ne sont pas transmises ou pas correctement.
http://archives.free.net.ph/message/20050802.054006.572ae7ba.en.html
Mon expérience :
ssais=> 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 ('Wolf');
INSERT 42132 1
essais=> INSERT INTO Groups (name) VALUES ('FT');
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 | Emmanuel Seyman | 2005-12-02 11:06:17 | synchroniser les tables de deux bases différentes |
Previous Message | Jonathan Ballet | 2005-11-30 22:31:13 | Problème de clé étrangère |