14

在 Oracle 上,我创建了一个这样的表:

创建表“Mig1”(
  “Id”整数非空
  , 约束“PK_Mig1”主键
(
   “ID” )
)

然后,我重命名 PK:

更改表“Mig1”将约束“PK_Mig1”重命名为“PK_XXX”

然后,我重命名表:

更改表“Mig1”重命名为“XXX”

然后,我尝试使用之前重命名的表的名称创建另一个表:

创建表“Mig1”(
  “Id”整数非空
  , 约束“PK_Mig1”主键
(
   “ID” )
)

此时我得到:An error occurred: ORA-00955: name is already used by an existing object。这是因为第一个表的主键在某种程度上仍然存在,尽管它被重命名了。如果我尝试像这样创建第二个表:

创建表“Mig1”(
  “Id”整数非空
  , 约束“YYY”主键
(
   “ID” )
)

有用。那么如何正确重命名主键及其所有关联资源,以便可以重用其名称?

4

1 回答 1

21

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

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