0

我正在尝试创建一个带有索引的表,但它导致 ORA-00907 错误,表示我缺少右括号。这是导致错误的示例 sql。

create table example
(
   id number(12, 0) not null using index (create index example_idx on example(id))
);

也许是因为非空关键字,但我不明白为什么它要求一个右括号。

4

1 回答 1

2

create table并且create index是单独的语句,您不能像那样混合它们(尽管您可以隐式或显式创建索引来备份您在线定义的唯一或主键约束)。

您需要分两步执行此操作,作为两个单独的语句:

create table example (id number(12, 0) not null);
create index example_idx on example(id);

您从此处显示的示例:

CREATE TABLE a (
 a1 INT PRIMARY KEY USING INDEX (create index ai on a (a1)));

在标题为“指定与约束关联的索引”的部分中,并且正在创建索引作为主键约束的一部分。此处描述了该using index子句。

在您的代码中,您创建了一个非空约束,它不受索引的支持,因此该子句在此处无效。如您提供的链接所述,如果要支持唯一键或主键,则只能使用这种创建索引的方法。

于 2013-04-23T05:12:03.077 回答