select
fkc.table_name as child_table,
fkc.column_name as child_table_col,
pkc.table_name as parent_table,
pkc.column_name as parent_table_col
from dba_constraints fk
join dba_cons_columns fkc on fkc.owner = fk.owner
and fkc.constraint_name = fk.constraint_name
join dba_cons_columns pkc on pkc.owner = fk.r_owner
and pkc.constraint_name = fk.r_constraint_name
and pkc.position = fkc.position
where fk.owner = 'MYDBS'
and fk.constraint_name = 'FK31_1'
order by fkc.position;
3条答案
按热度按时间4urapxun1#
如果您有访问权限,请从
DBA_CONSTRAINTS
和DBA_CONS_COLUMNS
中选择。否则尝试ALL_CONSTRAINTS
和ALL_CONS_COLUMNS
。连接列表两次,以获得父表的主键或唯一键列与子表的外键列的组合:jmo0nnb32#
Oracle提供了大量的元数据视图,从
ALL_
,USER_
和DBA_
开始。在我们的例子中,我们需要ALL_CONSTRAINTS,您可以查询为**编辑:**正如 Jeff Holt 在下面的评论中提到的,你也可以尝试ALL_CONS_COLUMNS:
rslzwgfq3#
下面是关于包含FK信息的DBA视图的图表(显示了各种约束(PK,UK,FK,NOT-NULL))