Подтвердить что ты не робот

Как переименовать первичный ключ в Oracle, чтобы его можно было повторно использовать

В Oracle я создаю таблицу следующим образом:

CREATE TABLE "Mig1"(
  "Id" INTEGER  NOT NULL
  , CONSTRAINT "PK_Mig1" PRIMARY KEY 
(
   "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
  , CONSTRAINT "PK_Mig1" PRIMARY KEY 
(
   "Id"  ) 
) 

В этот момент я получаю: An error occurred: ORA-00955: name is already used by an existing object. И это потому, что каким-то образом первичный ключ первой таблицы все еще находится вокруг, хотя он был переименован. Если я попытаюсь создать вторую таблицу следующим образом:

CREATE TABLE "Mig1"(
  "Id" INTEGER  NOT NULL
  , CONSTRAINT "YYY" PRIMARY KEY 
(
   "Id"  ) 
) 

он работает. Итак, как правильно переименовать первичный ключ со всеми его связанными ресурсами, чтобы его имя можно было повторно использовать?

4b9b3361

Ответ 1

Существует индекс, связанный с ограничением первичного ключа, и он, вероятно, все еще называется "PK_Mig1". Попробуйте следующее:

ALTER INDEX "PK_Mig1" RENAME TO "PK_XXX";