下面是通过这两个视图,查询出your_table的有外键的字段,以及外键指向的表
(r_constraint_name) SELECT a.r_constraint_name,b.column_name 
 from user_constraints a, user_cons_columns b
 where a.table_name = 'your_table' and a.constraint_type='R'
   and a.constraint_name=b.constraint_name

解决方案 »

  1.   

    这两个视图很清楚啊,dba_constraints是看所有用户的,user_constraints是看当前用户。user_cons_columns是有约束的列的视图,很清楚的。
      

  2.   

    谢谢楼上两位的指点,问一下lastdrop(空杯):
    1、constraint_type的值为'R'的是受到其它表的约束还是其它表受它的约束(即在外键约束中它是主表还是从表)。
    2、而且你说的可以查出外键指向的表,但我只看见select出来的是a.r_constraint_name和b.column_name,似乎没有外键所属的表名
    3、如果我A表中有三个字段id, area_id, name;而B表中有两个字段area_id, area_name,而A表的area_id字段受到B表的area_id字段约束,请问如果我要用一个select语句选出A表中所有有外键约束的字段及,外键的所属表名,这个语句应如何写?
      

  3.   

    1.因为条件是table_name='your_table',所以信息都是关于your_table的,外键也是在该表建立的。constraint_type的值为'R'的表示your_table受到其它表的约束,即your_table是从表。2. r_constraint_name就是外键指向的表,也就是外键约束中的主表。3. SELECT a.r_constraint_name,b.column_name 
     from user_constraints a, user_cons_columns b
     where a.table_name = 'A' and a.constraint_type='R'
       and a.constraint_name=b.constraint_name你可以先建立你所说的约束关系,再执行上面的SQL语句,应该可以得到
    B, AREA_ID这样的结果。