当我们知道与之关联的主键时,有没有办法找到外键

时间:2013-12-24 05:29:47

标签: oracle foreign-keys foreign-key-relationship

当我试图在表上删除主键约束时,我收到错误

ORA-02273: this unique/primary key is referenced by some foreign keys

如何在表格中找到与主键关联的外键。

当我使用user_constraints检查用户定义的约束时,它仅显示表的主键和其他3个系统约束。

CONSTRAINT_NAME                C
------------------------------ -
SYS_C0012618                   C
SYS_C0012667                   C
SYS_C0012881                   R
EMP_FK                         P

当我们知道与之关联的主键时,有没有办法找到外键。

4 个答案:

答案 0 :(得分:3)

你必须检查all_cons_coulmns;

上面粘贴的是你在上面粘贴的是约束名称和约束类型,其含义如下所示。

C (check constraint on a table)
P (primary key)
U (unique key)
R (referential integrity)
V (with check option, on a view)
O (with read only, on a view)

您可以看到'R'(SYS_C0012881)正是您所期待的。这是一个外键的参考约束。

尝试以下查询。它还显示外键约束名称以及关联的列和表名称。

SELECT a.table_name, a.column_name, a.constraint_name, c.owner, 
       c.r_owner, c_pk.table_name r_table_name, c_pk.constraint_name r_pk
  FROM all_cons_columns a
  JOIN all_constraints c ON a.owner = c.owner
                        AND a.constraint_name = c.constraint_name
  JOIN all_constraints c_pk ON c.r_owner = c_pk.owner
                           AND c.r_constraint_name = c_pk.constraint_name
 WHERE c.constraint_type = 'R'
   AND a.table_name = 'YOUR_TABLE_NAME';

如果您有像TOAD或SQL Developer这样的IDE,请使用鼠标选择表名,然后在TOAD中按F4,在SQL开发人员中按Shift + F4。它会弹出一个带有表格描述的窗口。如果您可以导航到约束选项卡并轻松找到您的详细信息!

祝你好运!

答案 1 :(得分:0)

select * from user_constraints where r_constraint_name = 'EMP_FK';

答案 2 :(得分:0)

R_CONSTRAINT_NAME的{​​{1}}列指向USER_CONSTRAINTS约束的父约束名称:

FOREIGN KEY

答案 3 :(得分:0)

select constraint_name,column_name from user_cons_columns where table_name='EMP';