J'essaye de trouver une requête qui me renverra une liste des clés étrangères pour une table et les tables et colonnes qu'elles référencent. Je suis à mi-chemin avec
SELECT a.table_name,
a.column_name,
a.constraint_name,
c.owner
FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS C
where A.CONSTRAINT_NAME = C.CONSTRAINT_NAME
and a.table_name=:TableName
and C.CONSTRAINT_TYPE = 'R'
Mais j'ai encore besoin de savoir quelle table et quelle clé primaire sont référencées par cette clé. Comment pourrais-je avoir ça?
oracle
metadata
database-metadata
stimms
la source
la source
Réponses:
La clé primaire référencée est décrite dans les colonnes
r_owner
etr_constraint_name
du tableauALL_CONSTRAINTS
. Cela vous donnera les informations que vous souhaitez:la source
Essaye ça:
la source
Voici un script polyvalent que nous utilisons qui a été incroyablement pratique.
Enregistrez-le pour pouvoir l'exécuter directement (@ fkeys.sql). Il vous permettra de rechercher par propriétaire et la table parent ou enfant et afficher les relations de clé étrangère. Le script actuel se spoule explicitement dans C: \ SQLRPTS, vous devrez donc créer ce dossier de modification de cette ligne en quelque chose que vous souhaitez utiliser.
la source
Cela parcourra la hiérarchie des clés étrangères pour une table et une colonne données et retournera les colonnes de l'enfant et du petit-enfant, et toutes les tables descendantes. Il utilise des sous-requêtes pour ajouter r_table_name et r_column_name à user_constraints, puis les utilise pour connecter des lignes.
la source
Voici une autre solution. L'utilisation des vues par défaut de sys est si lente (environ 10 secondes dans ma situation). C'est beaucoup plus rapide que cela (environ 0,5 s).
la source
"_CURRENT_EDITION_OBJ"
n'est pas reconnu.SYS."_CURRENT_EDITION_OBJ"
parSYS.OBJ$
. Il fonctionnerait à la fois sur 10g et 11g. Et assurez-vous d'avoir suffisamment de privilèges. J'ai aussi changé ma réponse avecSYS.OBJ$
.Si vous avez besoin de toutes les clés étrangères de l'utilisateur, utilisez le script suivant
basé sur le code Vincent Malgrat
la source
Je sais qu'il est un peu tard pour répondre mais permettez-moi de répondre quand même, certaines des réponses ci-dessus sont assez compliquées, donc voici une prise beaucoup plus simple.
la source
Dans le cas où l'on souhaite créer des contraintes FK à partir de la table d'environnement UAT vers Live, déclenchez sous la requête dynamique .....
la source
Ma version, à mon humble avis, plus lisible:
la source
::
avec:
ettable
avectabl
C'est un peu tard pour répondre, mais j'espère que ma réponse a été utile pour quelqu'un, qui a besoin de sélectionner des clés étrangères composites.
la source
J'ai utilisé le code ci-dessous et cela a servi mon objectif-
la source
la source
user_constraints
enall_constraints
si nécessaire.la source
la source
Pour Load UserTable (Liste des clés étrangères et des tables auxquelles elles font référence)
la source