Oracle10gでprimaryキーの削除をした際にINDEXが残る問題
Oracle10gで、プライマリキーの削除をした際にINDEXが残ってしまい、再作成できない問題があったので対処方法をメモしておきます。
-------------------
ダメな例:
ALTER TABLE [テーブル名] DROP CONSTRAINT [プライマリキー名] ALTER TABLE [テーブル名] ADD CONSTRAINT [プライマリキー名]
※INDEXが残っていて、エラーになる。
-------------------
良い例:
ALTER TABLE [テーブル名] DROP CONSTRAINT [プライマリキー名] CASCADE DROP INDEX; ALTER TABLE [テーブル名] ADD CONSTRAINT [プライマリキー名] PRIMARY KEY(xxxx);
-------------------
9iでは「DROP CONSTRAINT プライマリキー」でも問題がなかったのですが、10gの場合は「CASCADE DROP INDEX」を書かないとindexが残ってしまい、新しいプライマリーキーが作成できません。
※この現象は10gにおいてDMPでインポートされたテーブルに対して操作した場合に起こるようです。ですので、環境によっては起こらない場合もあるので気づきにくいようです。