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 :

Comment lister les clés étrangères d'une table?


Sujet :

SQL Oracle

  1. #1
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut Comment lister les clés étrangères d'une table?
    Bonjour tout le monde.

    Je voudrais créer une procédure qui liste :
    • Toutes les clés étrangères d'une table
    • Les noms des contraintes associées
    • Les noms des tables reférencées par la clé, ainsi que les colonnes reférencées

    J'ai essayé de combiner ces deux requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> select CONSTRAINT_NAME from dba_constraints where TABLE_NAME='NOM_TABLE' and CONSTRAINT_TYPE='R';
     
    CONSTRAINT_NAME
    ------------------------------
    FK_LDW_LDG1
    FK_LDW_TA
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select COLUMN_NAME from dba_cons_columns where TABLE_NAME='NOM_TABLE' and CONSTRAINT_NAME='FK_LDW_LDG1';
     
    COLUMN_NAME
    --------------------------------------------------------------------------------
    ID_LDG1
    Mais là je n'obtiens que :
    • Les noms des clés étrangères et
    • Les noms des contraintes associées

    Je n'arrive pas à trouver une vue qui me permet de connaître les noms des tables reférencées par la clé, ainsi que les colonnes reférencées.

    Ensuite je voudrais faire l'inverse de cette procédure : lister toutes les tables qui possèdent des clés étrangères associées à une table A.

    Quelqu'un aurait-t-il une idée?

    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Il y a une colonne R_CONSTRAINT_NAME dans la vue DBA_CONSTRAINTS qui référence, pour les lignes ou CONSTRAINT_TYPE = 'R' (clés étrangères), le nom de la clé primaire référencée.
    Est-ce cela qu'il te faut ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select b.r_constraint_name cle_étrangere, b.table_name "TABLE", a.table_name table_referencee, c.column_name colonne_referencee
    from all_constraints a, all_constraints b, all_cons_columns c
    where b.constraint_type = 'R'
    and b.r_constraint_name = a.constraint_name
    and b.r_constraint_name = c.constraint_name

  4. #4
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    SELECT b.r_constraint_name cle_étrangere, b.table_name "TABLE", a.table_name table_referencee, c.column_name colonne_referencee
    FROM all_constraints a, all_constraints b, all_cons_columns c
    WHERE b.constraint_type = 'R'
    AND b.r_constraint_name = a.constraint_name
    AND b.r_constraint_name = c.constraint_name
    Merci pour vos réponses. La première aussi bien que la deuxième pourrait résoudre mon problème en bricolant un peu. Résolu.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    salut, j'ai le meme probléme que vous mais en sql server 2005, est ce que vous avez une idée?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/05/2007, 14h53
  2. savoir les clés primaires d'une table
    Par hamdani dans le forum Administration
    Réponses: 6
    Dernier message: 21/05/2007, 16h54
  3. Réponses: 2
    Dernier message: 05/12/2006, 18h12
  4. comment rechercher les derniers enregistrement d'une table ?
    Par hornetboy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/09/2005, 09h13
  5. Comment avoir 2 clés primaires dans une table
    Par Guigui_ dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/01/2005, 08h29

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