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 :

Quelles clés étrangères référencent ma table ? [19c]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut Quelles clés étrangères référencent ma table ?
    Bonjour,

    J'imagine que la question a dû déjà être posée mais peut-être pas en ces termes ou que je n'ai pas trouvé la bonne formulation pour Google... Je n'ai pas trouvé non plus dans la FAQ Oracle ici.

    Quelle requête dois-je faire pour savoir quelles sont les contraintes de clé étrangère qui référencent une table X ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Je pense avoir trouvé ce que je cherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT f.owner, f.constraint_name, f.table_name, p.owner, p.table_name
    FROM all_constraints f
    INNER JOIN all_constraints p 
        ON p.constraint_name = f.r_constraint_name
        AND p.owner = f.r_owner
    WHERE p.owner = 'schéma referencé'
        AND p.table_name = 'table référencée';
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    all_constraints ne va pas directement te donner la table référencée, mais la pk, donc il suffit de faire une jointure pour récupérer la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select c1.owner, c1.constraint_name, c2.table_name table_referencee
    from all_constraints c1
    join all_constraints c2
    on c2.constraint_name = c1.r_constraint_name and c2.owner = c1.owner
    where c1.constraint_type = 'R';

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    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
    SELECT
        table_name,
        constraint_name,
        r_constraint_name  pk_or_uk_of_parent_table,
        (
            SELECT
                table_name
            FROM
                dba_constraints
            WHERE
                    owner = 'C##MHOURI'
                AND constraint_name = 'PK_DEPT'
        )                  parent_table
    FROM
        dba_constraints
    WHERE
            owner = 'C##MHOURI'
        AND r_constraint_name = 'PK_DEPT';
     
     
    TABLE_NAME           CONSTRAINT_NAME                PK_OR_UK_OF_PARENT_T PARENT_TABLE
    -------------------- ------------------------------ -------------------- --------------------
    EMP                  FK_DEPTNO                      PK_DEPT              DEPT

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/08/2009, 18h47
  2. insertion de clés étrangères dans ma table
    Par narama87 dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/04/2009, 13h51
  3. 2 Clés étrangères sur une table
    Par adel53 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/11/2008, 13h55
  4. Réponses: 6
    Dernier message: 08/11/2008, 15h37
  5. Réponses: 2
    Dernier message: 11/05/2007, 21h02

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