C'è un modo per ottenere tutte le tabelle che hanno chiavi esterne in un'altra tabella in Oracle con una query?Come ottenere tutte le tabelle che hanno FK su un'altra tabella?
5
A
risposta
12
Ecco a good article con una risposta:
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');
1
Supponendo che le tabelle sia il padre e figlio sono nello stesso schema di effettuare le seguenti operazioni:
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
Nota che r_constraint_name è popolato solo per FK (digita "R"), quindi l'auto join restituisce solo le informazioni di interesse
0
se conosciamo la chiave genitore, solo la risposta di juan modificata con gli impiegati tabl e
select *
from user_constraints
where R_CONSTRAINT_NAME='EMP_EMP_ID_PK'
and constraint_type='R'
Non capisco la tua domanda. Forse potresti ribadirlo o offrirti un esempio? – tpdi