oralce 中如何查看 表和表之间的关联 ?比如,修改A表中A1列的值,A1列的值必须在B表存在,如果B表中不存在则不能修改。我要怎么才知道A中的列和其他的表关联呢?

解决方案 »

  1.   

    查下A表的外键关联就行了。。
    select * from user_constraints where constraint_type='F' and table_name='A'
      

  2.   

    你在设计表的时候就要设计好,比如外键关联,主外键的关联
    要查看哪些外键,主要是根据user_constraints 、user_tab_columns 、User_tables几个视图来关联查询
      

  3.   

    看样子你是想得到外键关系?
    SQL> SELECT c.table_name  ref_table, --使用外键的表
      2         c.column_name ref_col, --外键的组成列
      3         d.table_name  base_table, --基表
      4         d.column_name base_col --基表主键
      5    FROM user_constraints a,
      6         user_constraints b,
      7         (SELECT constraint_name,
      8                 table_name,
      9                 wm_concat(column_name) column_name
     10            FROM user_cons_columns
     11           GROUP BY constraint_name, table_name) c,
     12         (SELECT constraint_name,
     13                 table_name,
     14                 wm_concat(column_name) column_name
     15            FROM user_cons_columns
     16           GROUP BY constraint_name, table_name) d
     17   WHERE a.constraint_type = 'R'
     18     AND a.r_constraint_name = b.constraint_name
     19     AND a.constraint_name = c.constraint_name
     20     AND b.constraint_name = d.constraint_name;
     
    REF_TABLE                      REF_COL                                                                          BASE_TABLE                     BASE_COL
    ------------------------------ -------------------------------------------------------------------------------- ------------------------------ --------------------------------------------------------------------------------
    T_REF                          PID,PNAME                                                                        T_BASE                         ID,NAME
     
    SQL>