Oracle查询某个表的参照关系


今天开发人员询问我怎么看某个表参照了其它哪些表,或者某个表被其它哪些表参照,最好能用图表(ER图)的方式展现,开始想通过TOAD或其它工具打开,但打开后导成图片,因为表太大,报错说资源不足,后来想通过数据字典来查,折腾好久,才写出来参照关系:

主要用到2张数据字典:user_constraints和user_cons_columns

sql如下,2个地方的表名“EMP”同时变换为需要查看的表,就可以查出和这个表“EMP”相关的参照关系:

  1. select a.table_name,a.COLUMN_NAME,c.table_name,c.column_name from    
  2. user_cons_columns a, user_constraints b, user_cons_columns c  
  3. where a.constraint_name=B.CONSTRAINT_NAME  
  4. and b.r_constraint_name=c.constraint_name  
  5. and (c.table_name='EMP' or a.table_name ='EMP');  

得出的结果为:前2列参照后2列。

相关内容