如何在Oracle中重命名主键以使其可以重用

如何在Oracle中重命名主键以使其可以重用,oracle,ora-00955,Oracle,Ora 00955,在Oracle上,我创建了如下表: CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "PK_Mig1" PRIMARY KEY ( "Id" ) ) CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "YYY" PRIMARY KEY ( "Id" ) ) 它起作用了。那么,如何使用主键的所有相关资源正确重命名主键,以便其名称可

在Oracle上,我创建了如下表:

CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "PK_Mig1" PRIMARY KEY ( "Id" ) ) CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "YYY" PRIMARY KEY ( "Id" ) )
它起作用了。那么,如何使用主键的所有相关资源正确重命名主键,以便其名称可以重用?

有一个与主键约束相关联的索引,它可能仍然被称为“PK_Mig1”。试试这个:

ALTER INDEX "PK_Mig1" RENAME TO "PK_XXX";

工作起来很有魅力。抱歉,我不知道Oracle正在维护约束之外的额外索引(来自SQL Server世界)。Oracle在任何情况下都会创建(或劫持)索引以维护主键和唯一约束。否则,你还能怎么做呢? CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "PK_Mig1" PRIMARY KEY ( "Id" ) ) CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "YYY" PRIMARY KEY ( "Id" ) )
ALTER INDEX "PK_Mig1" RENAME TO "PK_XXX";