14

Oracle では、次のようなテーブルを作成します。

CREATE TABLE "Mig1"(
  "ID" INTEGER NOT NULL
  、制約「PK_Mig1」主キー
(
   "ID" )
)

次に、PK の名前を変更します。

ALTER TABLE "Mig1" RENAME CONSTRAINT "PK_Mig1" TO "PK_XXX"

次に、テーブルの名前を変更します。

ALTER TABLE "Mig1" RENAME TO "XXX"

次に、以前に名前を変更したテーブルの名前を使用する別のテーブルを作成しようとしました。

CREATE TABLE "Mig1"(
  "ID" INTEGER NOT NULL
  、制約「PK_Mig1」主キー
(
   "ID" )
)

この時点で、次のようになりますAn error occurred: ORA-00955: name is already used by an existing object。これは、名前が変更されたにもかかわらず、何らかの形で最初のテーブルの主キーがまだ残っているためです。次のように2番目のテーブルを作成しようとすると:

CREATE TABLE "Mig1"(
  "ID" INTEGER NOT NULL
  、制約 "YYY" 主キー
(
   "ID" )
)

できます。では、その名前を再利用できるように、関連するすべてのリソースで主キーの名前を正しく変更するにはどうすればよいでしょうか?

4

1 に答える 1

21

主キー制約に関連付けられたインデックスがあり、おそらくまだ「PK_Mig1」と呼ばれています。これを試して:

ALTER INDEX "PK_Mig1" RENAME TO "PK_XXX";
于 2011-06-06T13:08:22.850 に答える