おそらくINDEX
があります PRIMARY KEY CONSTRAINT
に関連付けられています 、およびPK_B
とも呼ばれます 。
次のように確認できます:
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';
それが本当なら、そうしてください:
ALTER INDEX "PK_B" RENAME TO "PK_XYZ";
更新:ALTER INDEX
について 声明、コメントでジャスティンが言及したいくつかの重要なポイント
Oracleは暗黙的にUNIQUE
を作成します PRIMARY KEY CONSTRAINT
をサポートするためのインデックス 。インデックスは主キーと同じ名前であり、主キーが変更されているため、より良い 古い主キーの定義に従って、インデックスを削除して再作成します。
私の結論:
- 主キーの制約は、一意のインデックスを介して適用されます。
- Oracleがインデックス(一意または非一意)をすでに検出している場合は、そのインデックスを主キーに使用します。
- インデックスが最初に非一意として作成された場合、引き続き非一意として表示されますが、実際には一意のインデックスになります。
Arupによる優れたデモンストレーションと他の側面についても非常に詳細:主キーは一意性を保証しますか?もう一度考えてください。