是否可以命名在oracle主键创建期间创建的索引?

是否可以命名在oracle主键创建期间创建的索引?,oracle,indexing,primary-key,Oracle,Indexing,Primary Key,据我所知,在主键创建期间: a)如果主键字段或其组合上不存在索引,Oracle将在主键字段上创建新索引 b)如果主键字段或其组合上存在多个索引,但未指定索引,Oracle将在主键字段上使用其中一个索引 c)如果主键字段上存在任何索引,或者指定了其组合和索引名称,Oracle将使用该索引 d)Oracle在主键字段上使用一个索引,如果主键字段上只存在一个索引或其组合,甚至未指定索引 请建议将名称设置为oracle使用CREATETABLE语句本身创建的索引的可能性,以防(a) 默认情况下,索引的名

据我所知,在主键创建期间:

a)如果主键字段或其组合上不存在索引,Oracle将在主键字段上创建新索引

b)如果主键字段或其组合上存在多个索引,但未指定索引,Oracle将在主键字段上使用其中一个索引

c)如果主键字段上存在任何索引,或者指定了其组合和索引名称,Oracle将使用该索引

d)Oracle在主键字段上使用一个索引,如果主键字段上只存在一个索引或其组合,甚至未指定索引


请建议将名称设置为oracle使用CREATETABLE语句本身创建的索引的可能性,以防(a)

默认情况下,索引的名称与约束的名称相同:

CREATE TABLE tbl (ID NUMBER CONSTRAINT pk_tbl PRIMARY KEY);
约束命名是可选的,这就是为什么约束和隐式创建的索引都可以获得系统生成的名称

可以使用指定索引名称

CREATE TABLE tbl (ID NUMBER CONSTRAINT pk_tbl PRIMARY KEY USING INDEX (CREATE UNIQUE INDEX my_pk_index ON tbl(ID)));

以下是名称为的示例:

CREATE TABLE regions
   ( region_id NUMBER NOT NULL,
   region_name VARCHAR2(25),
   constraint regions_pk primary key (region_id)
   );
a) 如果prmary键字段上不存在索引,Oracle将在prmary键字段上创建新索引 主键字段或其组合

创建表时,将不会有任何索引。首先,它将创建表,然后使用该索引索引和主键

b) Oracle使用prmary键字段上的一个索引(如果有索引的话) 存在于主键字段或其组合上,但索引不存在 指定的

如果主键列上已经有表和多个索引,并且想要创建主键,则需要指定
using
子句并传递要使用的索引。如果只有一个索引,那么它将自动使用该索引

c) 如果主键字段上存在任何索引,Oracle将使用该索引 或者指定其组合和索引名称

没错。如果有多个索引,可以使用
using
子句指定