10
votes

Oracle obtenir des clés étrangères

J'aimerais avoir toutes les clés étrangères dans un schéma, comme ça. Disons que j'ai des tables

utilisateurs (ID, nom d'utilisateur, passe, adresse_id)

et

adresses (ID, texte) < / Code>

J'ai défini un FK sur les utilisateurs-adresse_id dans la colonne ID dans Adresses. Comment devrais-je écrire une requête qui me retournerait les colonnes FK comme: Utilisateurs, adresse_id, adresses, id?

merci! xxx


0 commentaires

3 Réponses :


2
votes

Ils sont énumérés dans la vue Système all_constraints

http://download.oracle. COM / DOCS / CD / B19306_01 / SERVER.102 / B14237 / STATVIEWS_1037.HTM # I1576022

edit

Les colonnes impliquées dans les contraintes sont répertoriées dans all_cons_columns

http://download.oracle. COM / DOCS / CD / B19306_01 / SERVER.102 / B14237 / STATVIEWS_1035.HTM # I1575870


2 commentaires

Merci! Mais à partir de là, je ne peux pas obtenir la colonne référencée, juste la contrainte référencée ...


Merci, mais je ne reçois toujours pas la sortie souhaitée. Je vais éditer et poster ma requête



14
votes

trouvé!

C'est ce que je cherchais, merci à tous de l'aide. xxx


1 commentaires

En ce qui concerne, j'ai ajouté une version améliorée de la réponse.



7
votes

Utilisation de la solution @maephisto étudiera un petit bogue:
Si la clé principale des tables de source est une clé composite CODE>, puis exécutant la requête résultera Dupliquer des enregistrements inutiles code>.


Considérez T1 et T2 Tables:
Tableau Master T1:

SELECT master_table.TABLE_NAME  MASTER_TABLE_NAME,
       master_table.column_name MASTER_KEY_COLUMN,
       detail_table.TABLE_NAME  DETAIL_TABLE_NAME,
       detail_table.column_name DETAIL_COLUMN
  FROM user_constraints  constraint_info,
       user_cons_columns detail_table,
       user_cons_columns master_table
 WHERE constraint_info.constraint_name = detail_table.constraint_name
   AND constraint_info.r_constraint_name = master_table.constraint_name
   AND detail_table.POSITION = master_table.POSITION
   AND constraint_info.constraint_type = 'R'
   AND constraint_info.OWNER = 'MY_SCHEMA'


0 commentaires