我正在尝试删除表的所有外键。首先,我使用meta.getExportedKeys(null, null, table);
和rs.getString("FK_NAME")
获取这些密钥的所有名称。
但是当我尝试使用以下方法删除此密钥时
ALTER TABLE tablename DROP CONSTRAINT fkname
它仅适用于某些键。有时我会得到:
ORA-02443: Cannot drop constraint - nonexistent constraint
但外键确实存在。我做错了什么?
答案 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>