Je recherche une requête permettant de récupérer des informations de clé étrangère (chaque ligne: table & champ de référence, table & champ référencé) d'un schéma complet.
J'ai trouvé cela, mais ne donne pas toutes les informations dont j'ai besoin: /programming/4389228/sql-for-oracle-to-check-if-a-constraint-exists
J'y travaille actuellement et je peux me retrouver avec une solution dans les prochaines minutes / heures. Mais si quelqu'un a déjà une solution de travail complète, je serai heureux de la savoir :)
oracle
query
foreign-key
Frosty Z
la source
la source
Réponses:
Après quelques "reverse-engineering" sur les requêtes faites par l' outil Navicat lors de l'ouverture de la fenêtre de table de conception d'une table (les requêtes récupérant des informations sur les clés étrangères apparaissent dans la fenêtre d' historique ), voici une solution:
la source
SQL Developer est livré avec un rapport qui fait exactement cela.
Il le fait uniquement pour le schéma de connexion, mais c'est une solution rapide pour qu'il obtienne tous les FK de la base de données - bien que vous souhaitiez peut-être omettre les schémas comme «APEX ...» et «SYS».
Il omet également des éléments tels que les tables de la corbeille.
Le rapport d'origine se trouve dans le panneau Rapports, dans les rapports du dictionnaire de données.
Voici la requête modifiée pour obtenir TOUS les FK.
Et voici à quoi ressemble ce rapport.
la source
Un code un peu compliqué qui affiche également les commentaires sur les colonnes (basé sur le code Frosty):
Pour rendre la sortie plus lisible, j'utilise
break on TABLE_NAME;
danssqlplus
(consultez ma question /programming/14998296/print-only-first-unique-value-for-column-that-order-by-in-oracle-sqlplus / ).UPDATE Requête plus simple qui recueille la liste des tables qui ont une référence FK à la table donnée (utile si vous souhaitez nettoyer les contraintes après le renommage des tables):
la source