1

私には理解できない奇妙な状況があります。マージ モジュールで SQL ブロックを実行して、Oracle スキーマを更新しています。複数のテーブルの主キーを変更しようとしているので、次の手順を実行しています。

FK 制約の削除、PK の削除、PK インデックスの削除 (PK の削除後もインデックスが存続する場合)、新しい PK の追加、FK の追加

これが私の問題です。インデックスが削除される部分に到達するまでは、すべて順調です。プライマリが削除され、(私の知る限りでは) そのキーに基づいて Oracle が作成したインデックスも即座に削除されます。インデックスの永続化に問題があったため、確実に削除されるように DROP INDEX スクリプトを追加しましたが、次のようになります。

Alter Table TABLE1 Drop Constraint TABLE1_PK

コマンドは正常に実行されました


DROP INDEX TABLE1_PK

ORA-01418: 指定されたインデックスは存在しません (これはまさに私が期待したものです)


ALTER TABLE TABLE1 ADD (CONSTRAINT TABLE1_PK PRIMARY KEY (TABLE_KEY) ENABLE VALIDATE)

ORA-00955: 名前は既存のオブジェクトですでに使用されています(オブジェクトはいずれの場合も古い索引です)


もちろん、FK は新しいキーに基づいているため、FK がリンクすることはありません。これを TOAD で実行すると、SQL は機能しますが、マージ モジュールを使用しない理由がわかりません。誰でも助けることができますか?

4

0 に答える 0