2010-08-25 102 views
3

使用Oracle,有什么方法可以执行查询来确定特定表与我的数据库中的任何其他表有什么关系?截至目前,我正在摆弄all_constraints表。查询查找表关系类型

回答

6

是的,比如,你可以这样做:

select p.table_name, 'is parent of ' rel, c.table_name 
from user_constraints p 
join user_constraints c on c.r_constraint_name = p.constraint_name 
         and c.r_owner = p.owner 
where p.table_name = 'MYTABLE'  
union all 
select c.table_name, 'is child of ' rel, p.table_name 
from user_constraints p 
join user_constraints c on c.r_constraint_name = p.constraint_name 
         and c.r_owner = p.owner 
where c.table_name = 'MYTABLE' 
+0

我可以查询'all_constraints',但user_constraints'什么也没有返回。除此之外,它就像一种魅力。谢谢。 – Mike 2010-08-25 15:19:36

+0

+1查询不错;-) – pgruetter 2012-01-04 13:08:16

3

我认为最好的办法是试图提取尽可能多的信息,你可以从外键约束

查看Database Journal的this article,详细解释外键数据挖掘。