From: | Sébastien Lardière <sebastien(at)lardiere(dot)net> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: Pas de contrainte référentielle vers un champ non-UNIQUE :-( |
Date: | 2008-09-08 15:44:25 |
Message-ID: | 2492851b58e01539d76ef4364a554493@80.247.230.89 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | Postg토토 결과SQL : Postg토토 |
On Mon, 8 Sep 2008 16:56:35 +0200, Stephane Bortzmeyer <bortzmeyer(at)nic(dot)fr>
wrote:
Bonjour,
> J'essaie de mettre une contrainte référentielle mais le champ visé n'a
> pas été déclaré comme UNIQUE :
>
> essais=> CREATE TABLE Foo(name TEXT NOT NULL);
> CREATE TABLE
> essais=> CREATE TABLE Bar(truc TEXT, machin TEXT REFERENCES Foo(name));
> ERROR: there is no unique constraint matching given keys for referenced
> table "foo"
>
> [Si Foo(name) est déclaré UNIQUE, cela passe.]
>
> Première question : pourquoi PostgreSQL 8.3 impose t-il cette
> contrainte supplémentaire qui ne me semble pas logique ?
Ce n'est pas Pg 8.3, c'est la définition même de l'intégrité
référentielle¹. C'est dans la doc de PostreSQL depuis au moins la
version 7.3, je ne suis pas remonté plus loin.
>
> Deuxième question : quel contournement utiliser à part abandonner la
> sécurité que me fournit REFERENCES ?
>
Des triggers ?
¹ : http://en.wikipedia.org/wiki/Foreign_key
--
Sébastien
From | Date | Subject | |
---|---|---|---|
Next Message | BPascal | 2008-09-09 08:22:19 | procédure stockée |
Previous Message | Guillaume Lelarge | 2008-09-08 15:42:25 | Re: [pgsql-fr-generale] Pas de contrainte référentielle vers un champ non-UNIQUE :-( |