How can I find the parent table(s) of foreign constraint(s) on a table key in oracle? I'm needing to create a dropdown of all of the values that can be selected for this column I'm looking at and need to know the parent so I can look up its sibling values.
            Asked
            
        
        
            Active
            
        
            Viewed 1.4k times
        
    2 Answers
2
            You can query this information from all_constraints (or user_constraints or dba_constraints, of course). Unfortunately, you can only retrieve the name of the constraint a foreign key refers to, so you'll have to use a sub query or a self join to retrieve the referring table:
SELECT r.table_name
FROM   user_constraints t
JOIN   user_constraints r ON t.r_constraint_name = r.constraint_name
WHERE  t.constraint_type = 'R' AND t.table_name = 'SOME_TABLE'
- 
                    1So I should apply this to the table that has the constraint? The child table? – Dale Oct 27 '16 at 21:19
- 
                    @Dale yup - replace `'SOME_TABLE'` with the name of the table that has the foreign key constraints (the child table) and you should get the name[s] of the table[s] it references (the parent table[s]) – Mureinik Oct 27 '16 at 21:20
- 
                    I did this and received an error of ORA-00904: "R"."CONSTRAINTS_NAME": invalid identifier – Dale Oct 27 '16 at 21:21
- 
                    @Dale That was a typo, mea culpa. It's supposed to be "constraint_name". I've edited the answer and fixed it. – Mureinik Oct 27 '16 at 21:22
- 
                    Thanks. That did it. – Dale Oct 27 '16 at 21:27
0
            
            
        You can use the below query to get the parent table.
select * from all_constraints
where constraint_name in (select r_constraint_name from all_constraints
where table_name in 'TAB_NAME'); 
 
    
    
        Kaushal Talniya
        
- 182
- 2
- 5
- 12
 
     
    