为何我的SQL建表语句执行时Oracle报ORA-00906: 缺失左括号错误?
ORA-00906: missing left parenthesis 错误原因及修复
错误根源在于唯一约束的语法不符合Oracle规范:当为表级唯一约束指定USING INDEX子句时,必须通过CONSTRAINT关键字显式声明约束,不能直接以UNIQUE ("NAME")开头后接USING INDEX配置。
原SQL中这部分代码存在语法问题:
UNIQUE ("NAME") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) ENABLE
数据库解析该语句时,无法识别这种无CONSTRAINT包裹的约束定义结构,因此抛出"缺失左括号"的错误(错误提示指向括号,但本质是语法结构不合法)。
修复方案
为唯一约束添加CONSTRAINT关键字及约束名(可自定义,示例中使用WWV_FLOW_FILE_OBJ_UK_NAME),调整后的代码如下:
CONSTRAINT "WWV_FLOW_FILE_OBJ_UK_NAME" UNIQUE ("NAME") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT ) ENABLE
内容的提问来源于stack exchange,提问作者Misha Rukazo
相关产品推荐
相关产品推荐

