[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]
Re: Probleme avec postgresql 7 et foreign key
- To:
- Subject: Re: Probleme avec postgresql 7 et foreign key
- From: Hugo Villeneuve <>
- Date: Tue, 28 Nov 2000 21:37:50 -0500 (EST)
-
In-reply-to: <[email protected]>
C'est que tu definis mal tes clef primaire et secondaire lors de la
creations de tes tables.
ex:
CREATE TABLE client (
id_client int4 PRIMARY KEY,
name varchar NOT NULL
);
CREATE TABLE photo (
id_photo int4 PRIMARY KEY,
data varchar NOT NULL
);
CREATE TABLE autorise (
id_client int4
REFERENCES client (id_client)
ON DELETE CASCADE
ON UPDATE CASCADE,
id_photo int4
REFERENCES photo (id_photo)
ON DELETE CASCADE
ON UPDATE CASCADE,
PRIMARY KEY (id_client, id_photo)
);
Ceci marche correctement.
Hugo Villeneuve
On Tue, Nov 28, 2000 at 02:52:55AM -0500, boisseau Sebastien wrote:
> Bonjour,
>
> J'ai un petit problème avec la gestion des clés étrangères:*
>
> Le but de la base est de gérer une banque d'images numériques, avec des droits spécifiques
> selon les utilisateurs,
> Voici les tables que je dois créer:
> * Une table user contenant une clé primaire: id_client,
> * Une table photo contenant des photos: clé primaire: id_photo
> * J'associe alors les deux identifiants (id_photo et id_client)
> dans une table "autorise";
>
> Mon idée est de dire que dans la table "autorise", le champs id_photo
> est une clé étrangère avec l'option "ON CASCADE DELETE". Ainsi, quand une
> photo sera dégagée de la table "photo", tout les entrées de la table
> "autorise" possèdant l'identifiant de la photo dégagée, seront aussi dégagées.
>
> MON PROBLEME:
> Il n'y a pas de probleme a la création, mais lors de l'insertion, je ne peux
> insérer dans la table "autorise" qu'une seule entrée faisant référence à une photo!!
> Ainsi, je ne peux insérer :
> id_photo | id_client
> '02' | '03'
> '02' | '06'
> La seconde ligne est refusée, à cause de la foreign key!!!
>
> Comment faire ?? (en conservant l'option delete cascade)
>
> Je vous remercie d'avance
>
> A+
>
> SEB
--
Hugo Villeneuve
Junior Programmer - FaxMate Inc.
Email: [email protected]
Tel: 1(514)334-1889 x239
Fax: 1(514)334-7127
http://www.faxmate.com