无法删除外键(Oracle)

时间:2011-07-20 09:18:49

标签: oracle jdbc foreign-keys constraints

我正在尝试删除表的所有外键。首先,我使用meta.getExportedKeys(null, null, table);rs.getString("FK_NAME")获取这些密钥的所有名称。

但是当我尝试使用以下方法删除此密钥时

ALTER TABLE tablename DROP CONSTRAINT fkname

它仅适用于某些键。有时我会得到:

ORA-02443: Cannot drop constraint - nonexistent constraint

但外键确实存在。我做错了什么?

1 个答案:

答案 0 :(得分:5)

你试过吗

ALTER TABLE tablename DROP CONSTRAINT "fkname";

代替?

您可能以区分大小写的方式创建了约束,在这种情况下,您需要在删除它时将约束名称放在双引号中。这是SQL * Plus中的示例会话:

SQL> create table test (a integer);

Table created.

SQL> alter table test add constraint "abcd" unique (a);

Table altered.

SQL> alter table test drop constraint abcd;
alter table test drop constraint abcd
                                 *
ERROR at line 1:
ORA-02443: Cannot drop constraint  - nonexistent constraint


SQL> alter table test drop constraint "abcd";

Table altered.

SQL>