无法删除外键(Oracle)

jha*_*sse 1 oracle constraints jdbc foreign-keys

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

但是当我尝试删除此密钥时使用:

ALTER TABLE tablename DROP CONSTRAINT fkname
Run Code Online (Sandbox Code Playgroud)

它只适用于某些键.有时我会得到:

ORA-02443: Cannot drop constraint - nonexistent constraint
Run Code Online (Sandbox Code Playgroud)

但外键确实存在.我究竟做错了什么?

Luk*_*ard 5

你有没有尝试过

ALTER TABLE tablename DROP CONSTRAINT "fkname";
Run Code Online (Sandbox Code Playgroud)

代替?

您可能以区分大小写的方式创建了约束,在这种情况下,您需要在删除时将约束名称放在双引号中.这是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>