2009-04-08 8 views

Répondre

12

Voici a good article une réponse:

select owner,constraint_name,constraint_type,table_name,r_owner,r_constraint_name 
from all_constraints 
where constraint_type='R' 
and r_constraint_name in (select constraint_name from all_constraints 
where constraint_type in ('P','U') and table_name='TABLE_NAME'); 
+0

Je vais vérifier cette vue - la requête retourne la table qui a le FK, et je devrais spécifier une table et obtenir toutes les autres tables qui ont un FK – juan

+0

Je l'ai édité avec la requête correcte de l'article, donc je pourrais l'accepter – juan

1

Si l'on suppose que les deux tables parent et enfant sont dans le même schéma, procédez comme suit:

select t1.table_name child_table, t1.constraint_name, t2.table_name parent_table 

from user_constraints t1, user_constraints t2 

where t1.r_constraint_name = t2.constraint_name 

Notez que r_constraint_name est peuplé uniquement pour FK (type 'R') contraintes, de sorte que l'auto-jointure ne renvoie que des informations d'intérêt

0

si nous connaissons la clé parente, juste modifié la réponse de juan avec les employés tabl e

select * 
from user_constraints 
where R_CONSTRAINT_NAME='EMP_EMP_ID_PK' 
and constraint_type='R' 
Questions connexes