You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:57:03