В 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" ) )
он работает. Итак, как правильно переименовать первичный ключ со всеми его связанными ресурсами, чтобы его имя можно было повторно использовать?