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

SQL Oracle Discussion :

référencer une colonne d'une clé primaire composée


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut référencer une colonne d'une clé primaire composée
    Bonjour,
    Version Oracle : 10G.
    Problème :
    J'ai une tableT1 avec une clé primaire composée de trois colonnes
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    constraint pk_T1 primary key (col1, col2,col3)
    J'ai une autre table T2 qui contient la colonne col2 et je voudrais implémenter la contrainte qui la lie à T1.
    J'ai essayé avec une foreign key et je me fais jeter car le nombre de colonnes est incorrect.
    J'ai essayé avec un contrainte check et un select à l'intérieur de celle-ci : erreur car subselect interdit (c'est le message que je reçois)
    Peut-être la clause MATCH peut-elle correspondre à mon besoin mais je ne la maitrise pas bien.
    Merci pour votre aide.

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 76
    Points : 81
    Points
    81
    Par défaut
    Bonjour,

    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
    21
    22
    23
    24
    25
    CREATE TABLE ESSAI
    (
      "key1_pk" VARCHAR2(9),
      "key2_pk" VARCHAR2(10),
      PRIMARY KEY (
        "key1_pk",
        "key2_pk"
      )
    )
     
    CREATE TABLE TABLE_FILLE
    (
      "key1_fk" VARCHAR2(9),
      "key2_fk" VARCHAR2(10),
      "key_pk" NUMBER(10,0),  
      PRIMARY KEY (
        "key_pk"
      )
     
    ALTER TABLE TABLE_FILLE
       ADD (
       CONSTRAINT FK_EMP_TEL
       FOREIGN KEY("key1_fk","key2_fk")
       REFERENCES ESSAI("key1_pk","key2_pk")
       )
    Est ce que cela repond à votre problème?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Voici ce que je voudrais réaliser:

    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
    CREATE TABLE ESSAI
    (
      "key1_pk" VARCHAR2(9),
      "key2_pk" VARCHAR2(10),
      PRIMARY KEY (
        "key1_pk",
        "key2_pk"
      )
    )
     
    CREATE TABLE TABLE_FILLE
    (
     
      "key2_fk" VARCHAR2(10) references ESSAI (key2_pk),
      "key_pk" NUMBER(10,0),  
      PRIMARY KEY (
        "key_pk","key2_fk"
      )
    )
    J'espère avoir été compréhensible, merci pour votre réponse.

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Je pense que ce n'est pas possible si key2_pk n'est pas une clé primaire seule.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Points : 95
    Points
    95
    Par défaut
    A ma connaissance ce n'est pas possible
    du moins pour une contrainte de type 'foreign key' car la colonne en question n'est pas une clé primaire dans la table referencée.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Bonjour

    J'ai une question.

    En fait j'ai créé une table "users" sur oracleXE. Ds cette table, j'ai un champs login (varchar2) qui est la clé primaire. Je reussis à remplir ma table avec Java/JDBC sans erreurs mais qd je consulte ma table via oracle pr verifier, je remarque que le login deviens un entier qui s'autoincremente au fur et mesure du remplissage de la table alors ka la base j'envoie un String ki devrait etre converti en varchar2 au moment de l'insertion.
    Pour les autre champs "pass, profession ..." ca marche bien . C juste le champs login (clé primaire) qui se stocke sous forme d'ID.

    Merci les amis pr votre aide.

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  4. supprimer une ligne et une colonne d'une matrice
    Par nessing dans le forum C++Builder
    Réponses: 8
    Dernier message: 14/08/2007, 15h42
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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