执行Oracle建表语句触发ORA-00906错误,无法定位原因求助
解决Oracle ORA-00906 "missing left parenthesis"错误
这个报错的原因很明确——你的唯一约束写法不符合Oracle的语法规则!
问题出在哪?
你写的这行约束代码里用了UNIQUE KEY,这是MySQL的语法,但Oracle并不认KEY这个关键字:
CONSTRAINT SCHOOL_SCHOOL_NAME_UK UNIQUE KEY (SCHOOL_NAME),
Oracle解析到UNIQUE后,预期直接跟着括号包裹的字段列表,突然冒出来的KEY会让它语法解析失败,进而抛出"缺少左括号"的错误(本质是语法逻辑混乱导致的误解)。
修正后的完整建表语句
把UNIQUE KEY改成UNIQUE就可以正常执行了:
CREATE TABLE SCHOOL ( WELFARE_TYPE VARCHAR2(20), ESTABLISHMENT_DATE DATE, SCHOOL_NAME VARCHAR2(20), DONATION_FUND VARCHAR2(20), TOTAL_TEACHER NUMBER(10,0), TOTAL_STUDENTS NUMBER(10,0), CONSTRAINT SCHOOL_SCHOOL_NAME_UK UNIQUE (SCHOOL_NAME), CONSTRAINT WELFARE_TYPE_PK PRIMARY KEY (WELFARE_TYPE) );
另外多提一句:用WELFARE_TYPE(福利类型)作为主键是否符合业务逻辑?通常主键应该是能唯一标识学校的字段(比如学校ID),福利类型大概率会有重复场景。当然这只是基于常规业务的小提醒,最终还是看你的实际需求~
内容的提问来源于stack exchange,提问作者Jubaida Jerin JQ
相关产品推荐
相关产品推荐

