如果我在创建过程中没有命名外键,如何删除外键
create table abc(
id number(10),
foreign key (id) references tab(roll)
);
甚至
alter table abc drop foreign key mn_ibfk_1;
不适合我。我正在使用Oracle 10g。
答案 0 :(得分:0)
由于您没有指定约束名称,Oracle会为您生成一个(类似SYS_034849548
)。
您需要找到约束名称才能删除它:
select constraint_name
from user_constraints
where table_name = 'ABC'
and constraint_type = 'R'
将显示约束名称。然后,您可以使用以下命令删除约束:
alter table abc drop constraint <constraint_name>;
(将<constraint_name>
替换为您使用SQL语句检索的名称)
请注意,语法为alter table ... drop constraint
。没有drop foreign key
。
答案 1 :(得分:0)
试试这个
alter table mn drop constraint mn_ibfk_1;
要确定约束的名称,请尝试此查询
SELECT a.table_name child_table,
b.table_name parent_table,
a.constraint_name child_constraint,
b.constraint_name parent_constraint,
c.column_name child_column,
d.column_name parent_column
FROM user_constraints a,
user_constraints b,
user_cons_columns c,
user_cons_columns d
WHERE a.constraint_type = 'R'
AND b.constraint_type = 'P'
AND b.constraint_name = a.r_constraint_name
AND A.table_name = c.table_name
AND b.table_name = d.table_name
AND a.constraint_name = c.constraint_name
AND b.constraint_name = d.constraint_name
AND c.position = d.position
AND a.table_name = 'mn' ;