据我所知,在创建主键期间:
a)如果主键字段或其组合上没有索引,Oracle会在prmary键字段上创建新索引
b)如果主键字段或其组合上存在多个索引但未指定索引,则Oracle使用prmary key字段中的一个索引
c) Oracle使用索引,如果主键字段上存在任何索引或指定了其组合和索引名称
d) Oracle在主键字段上使用一个索引,如果主键字段上只存在一个索引,或者其组合甚至没有指定索引
请建议使用CREATE TABLE语句本身为oracle创建的索引设置名称,如果是(a)!
答案 0 :(得分:2)
默认情况下,索引的名称与约束的名称相同:
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)));
答案 1 :(得分:0)
以下是名称为
的示例CREATE TABLE regions
( region_id NUMBER NOT NULL,
region_name VARCHAR2(25),
constraint regions_pk primary key (region_id)
);
a)如果没有索引,Oracle会在prmary key字段上创建新索引 主键字段或其组合
创建表时,不会有任何索引。首先,它将创建表,然后使用该索引创建索引和主键。
b)如果有任何索引,Oracle会使用prmary key字段中的一个索引 存在于主键字段或其组合上,但索引不存在 指定的
如果主键列上已有表和多个索引,并且想要创建主键,则需要指定using
子句并传递要使用的索引。如果只有一个索引,那么它将自动使用该索引。
c)如果主键字段上存在任何索引,Oracle将使用索引 或指定其组合和索引名称
这是对的。如果是多个索引,您可以使用USING
子句指定。