当我试图在表上删除主键约束时,我收到错误
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
当我们知道与之关联的主键时,有没有办法找到外键。
答案 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';