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

Posted

技术标签:

【中文标题】错误:在 Oracle 上创建索引时缺少右括号【英文标题】:Error: Missing Right Parenthesis when Creating Index on Oracle 【发布时间】:2013-04-23 05:08:19 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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。

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

【讨论】:

docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm 此链接显示方式相同(参见示例 1)。 @randacun - 确实如此,但仅适用于唯一键和主键约束,并且您不会创建其中之一;只有一个非空约束。我已经更新了答案,希望能澄清这一点。 谢谢,我可能会坚持单独声明索引。

以上是关于错误:在 Oracle 上创建索引时缺少右括号的主要内容,如果未能解决你的问题,请参考以下文章

oracle 缺少右括号(第 7 行)

在 Oracle 中创建表会产生“缺少右括号”错误 [重复]

我在 Oracle Apex ORA-00907 上遇到错误:缺少右括号

ORA-00907: ORACLE 10G 中缺少右括号

在Oracle sql live上运行时缺少右括号[关闭]

从 DB2 移植到 ORACLE - ORA-00907:缺少右括号