【问题标题】:How to rename a primary key in Oracle such that it can be reused如何重命名Oracle中的主键以便可以重用
【发布时间】:2011-09-09 06:56:58
【问题描述】:

在 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” ) )

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

【问题讨论】:

    标签: oracle ora-00955


    【解决方案1】:

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

    ALTER INDEX "PK_Mig1" RENAME TO "PK_XXX";
    

    【讨论】:

    • 像魅力一样工作。抱歉,不知道 Oracle 在约束之外维护了一个额外的索引(来自 SQL Server 世界)。
    • Oracle 在所有情况下都创建(或劫持)索引以维护主键和唯一约束。不然你还能怎么办?
    猜你喜欢
    • 1970-01-01
    • 2012-06-01
    • 2011-02-11
    • 2022-12-02
    • 2014-02-23
    • 2020-10-27
    • 2014-04-11
    • 1970-01-01
    • 2022-10-01
    相关资源
    最近更新 更多