错误:在Oracle上创建索引时缺少右括号

时间:2013-04-23 05:08:19

标签: sql oracle oracle10g

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

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

也许是因为not null关键字,但我不明白它为什么要求右括号。

1 个答案:

答案 0 :(得分:2)

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

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

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

您从here显示的示例:

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

位于标题为'指定与约束关联的索引'的部分中, 正在创建索引作为主键约束的一部分。 using index子句描述为here

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