无法在oracle中的主键字段上设置Sorted ASC Index

时间:2012-03-21 10:01:11

标签: oracle indexing primary-key sorted

当我尝试在字段MyId上添加一个已排序的ASC索引时,oracle sql开发人员工具说:

Index MyIdSortedIndex is defined identically to constraint PK_MyTable


CREATE TABLE MyTable 
   (    "MyId" NVARCHAR2(50), 
    "DESCRIPTION" NVARCHAR2(200), 
     CONSTRAINT "PK_MyTable" PRIMARY KEY ("MyId")  
   )

如何在Oracle中的表主键MyId上设置已排序的ASC索引?

1 个答案:

答案 0 :(得分:2)

它告诉您不需要新索引,因为您已经在“MyId”上按升序排列了一个名为“PK_MyTable”的索引。向表中添加主键约束时,Oracle会自动添加相同名称的索引以帮助强制执行,从而按升序索引约束的列(因为升序是默认方向)。

如果您不想使用Oracle自动创建的索引,您可以执行以下操作:

CREATE TABLE MyTable 
   (    "MyId" NVARCHAR2(50), 
    "DESCRIPTION" NVARCHAR2(200), 
   );

CREATE INDEX MyIdSortedIndex ON MyTable ("MyId" ASC);

ALTER TABLE MyTable Add CONSTRAINT "PK_MyTable" PRIMARY KEY ("MyId");

由于您的索引在添加主键时已经存在,因此Oracle将使用该索引而不是创建自己的索引。