2011-07-20 23 views
1

テーブルのすべての外部キーを削除しようとしています。まず、meta.getExportedKeys(null, null, table);rs.getString("FK_NAME")を使用して、それらのキーの名前をすべて取得します。外部キー(Oracle)を削除できません

しかし、私は使用してこのキーを削除しようとすると:それだけでいくつかのキーのために働く

ALTER TABLE tablename DROP CONSTRAINT fkname 

を。ときどき私は次のようになります:

ORA-02443: Cannot drop constraint - nonexistent constraint 

しかし外来キーは間違いありません。私は間違って何をしていますか?

答えて

5

は、あなたの代わりに

ALTER TABLE tablename DROP CONSTRAINT "fkname"; 

を試してみましたか?

大文字小文字を区別して制約を作成した可能性があります。その場合は、制約名を二重引用符で囲む必要があります。

 
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> 
+1

その他の可能性は、制約を所有する表が異なるスキーマにあることです。たとえば、FREDにはテーブル 'A'と 'B'があり、 'B'の制約はFREDA所有のテーブル 'A'を指しています –

+0

@Garyありがとう!それは問題だった:) – jhasse

関連する問題