IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Probleme d'heritage curieux


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 40
    Par défaut Probleme d'heritage curieux
    Je possede deux tables : Personne, Homme (qui hérite de personne).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    CREATE TABLE "Personne"
    (
      "ID" varchar(32) NOT NULL,
      "NomFamille" varchar(80),
      "Prenom1" varchar(80),
      CONSTRAINT "Personne_pkey" PRIMARY KEY ("ID"),
      CONSTRAINT "Personne_ID_key" UNIQUE ("ID")
    ) 
    WITHOUT OIDS;
    ALTER TABLE "Personne" OWNER TO postgres;
     
    CREATE TABLE "Homme"
    (
      "ID" varchar(32) NOT NULL,
      "NomFamille" varchar(80),
      "Prenom1" varchar(80)
    ) INHERITS ("Personne") 
    WITHOUT OIDS;
    ALTER TABLE "Homme" OWNER TO postgres;

    Maintenant je voudrais créer une table couple qui possède une clé etrangere sur l'ID de Homme.

    Avec le code suivant, ca marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE "Couple"
    (
      "HommeID" varchar(32),
      "ID" varchar(32) NOT NULL,
      CONSTRAINT "Couple_pkey" PRIMARY KEY ("ID"),
      CONSTRAINT "Couple_Homme_fkey" FOREIGN KEY ("HommeID") REFERENCES "Homme" ("ID") ON UPDATE NO ACTION ON DELETE NO ACTION
    ) 
    WITHOUT OIDS;
    ALTER TABLE "Couple" OWNER TO postgres;
    Il me met l'erreur : ERROR: there is no unique constraint matching given keys for referenced table "Homme"


    Alors que si je met


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE "Couple"
    (
      "HommeID" varchar(32),
      "ID" varchar(32) NOT NULL,
      CONSTRAINT "Couple_pkey" PRIMARY KEY ("ID"),
      CONSTRAINT "Couple_Homme_fkey" FOREIGN KEY ("HommeID") REFERENCES "Personne" ("ID") ON UPDATE NO ACTION ON DELETE NO ACTION
    ) 
    WITHOUT OIDS;
    ALTER TABLE "Couple" OWNER TO postgres;

    Ca marche bien.


    Pourtant je croyai qu'une table hérite de tous les champs de la table héritée. Je ne comprend pas où se trouve le problème, je sollicite donc votre aide.


    Merci.

  2. #2
    Membre éclairé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut
    Je ne vois pas la différence entre tes deux derniers codes ! C'est peut-etre moi lol.

    Juste une chose. En postgresql, mieux vaut eviter les majuscules dans les noms de tables et de colonnes. Ca amene de serieuses galeres pour peu de choses. J'avais fait pareil et j'ai du tout modifié.
    Contrairement à MySQL par exmple, Postgres respecte la casse minuscule/majuscule

  3. #3
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 40
    Par défaut
    Effectivement, y'avai une erreur dans mon copier-coller, mais maintenant c corrigé.
    La différence entre les deux codes se trouve dans la définition de contrainte de la clé etrangère.

    Et merci pour la précision sur la casse. mais jusqu'a present, ca ne m'a jamais posé de problème (je croise les doigts)

    Quelqu'un aurait-il une idée?

    Merci.

Discussions similaires

  1. probleme d'heritage tform1
    Par nosfer dans le forum C++Builder
    Réponses: 5
    Dernier message: 29/05/2006, 13h33
  2. probleme d'heritage sur des chaines de caracteres
    Par pikiwiki dans le forum C++
    Réponses: 3
    Dernier message: 24/05/2006, 21h01
  3. Probleme d'heritage
    Par drcd dans le forum C++
    Réponses: 5
    Dernier message: 28/04/2006, 16h42
  4. [debutant] Probleme d heritage
    Par Treuze dans le forum Débuter
    Réponses: 20
    Dernier message: 21/04/2006, 12h46
  5. probleme d heritage.
    Par ceres02 dans le forum Langage
    Réponses: 11
    Dernier message: 30/03/2006, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo