[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




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