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

执行CREATE TABLE语句时遇ORA-00907:缺失右括号错误求助

ORA-00907: missing right parenthesis 错误原因及修正方案

导致错误的核心问题是语法不符合Oracle的表定义规范,具体错误点如下:

  • 主键定义写法错误
    你将列类型定义和主键约束合并在了同一个括号里,primary key(emp_id number(20)) 这种写法违反Oracle语法,正确的方式是先定义列,再单独声明主键约束,或者在列定义后直接追加primary key。

  • 外键约束冗余语法
    在定义dept_no的外键时,FOREIGN KEY(dept_no)属于冗余写法。因为已经在列dept_no后面直接关联约束,只需保留CONSTRAINT fk REFERENCES department(dept_no)即可,多余的外键声明会导致语法解析错误。

另外还有一处逻辑错误(非当前语法错误,但需修正):

  • 日期校验逻辑不合理
    birth_date date CHECK(birth_date>18)中,日期类型和数字18直接比较没有意义,应该改为校验员工年龄大于18,比如用CHECK(TRUNC(MONTHS_BETWEEN(SYSDATE, birth_date)/12) > 18)来计算年龄并校验。

修正后的完整CREATE TABLE语句

create table employee(
  emp_id number(20) primary key,
  emp_name varchar(30),
  birth_date date CHECK(TRUNC(MONTHS_BETWEEN(SYSDATE, birth_date)/12) > 18),
  gender varchar(10),
  dept_no number(20)
    CONSTRAINT fk REFERENCES department(dept_no),
  address varchar(50),
  designation varchar(20)
    CHECK(designation IN('manager', 'clerk', 'leader', 'analyst', 'designer', 'coder','tester')),
  salary number(50)
    CHECK(salary>0),
  experience number(2),
  email_id varchar(30)
    CONSTRAINT chk_email
    CHECK (REGEXP_LIKE(email_id,'^[A-Za-z0-9_.]+@[A-Za-z]+\.[A-Za-z]{2,4}$'))
);

内容的提问来源于stack exchange,提问作者Mit Rao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:05:20