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

Oracle建表报ORA-00907缺失右括号错误,正确括号位置如何放置?

ORA-00907报错原因及修复方案

核心问题定位

报错并非右括号放置错误导致,实际是两个语法和逻辑问题触发了误报:

  • 列定义末尾缺失分隔逗号:Customer_ID NUMBER NOT NULL 行末尾没有加逗号,SQL解析器会将后续的约束定义识别为当前列的属性,读到不符合语法规则的内容时就会误报缺失右括号
  • 外键引用的字段未在本表声明:约束里用到的Owner_ID、Payment_ID两个字段,没有在Trips表的列定义中出现;同时你已经定义的Payment字段,和外键引用的Payment表主键Payment_ID命名不匹配

修正后的建表语句

CREATE TABLE Trips 
(
    Trips_ID NUMBER NOT NULL,  
    Date_of_Trip DATE NOT NULL, 
    Payment_ID NUMBER NOT NULL, -- 调整字段名和外键引用的目标主键保持一致
    Destination_Town VARCHAR2(50) NOT NULL, 
    Source_Town VARCHAR2 (50) NOT NULL,
    Customer_ID NUMBER NOT NULL,
    Owner_ID NUMBER NOT NULL, -- 新增外键约束需要用到的Owner_ID字段
    CONSTRAINT Trip_pk
        PRIMARY KEY (Trips_ID),
    CONSTRAINT Customer_fk
        FOREIGN KEY (Customer_ID) REFERENCES Customer (Customer_ID),
    CONSTRAINT Owner_fk
        FOREIGN KEY (Owner_ID) REFERENCES Vehicle_Owners (Owner_ID),
    CONSTRAINT Payment_fk
        FOREIGN KEY (Payment_ID) REFERENCES Payment (Payment_ID)
);

补充说明

如果Owner_ID、Payment_ID允许为空,可以自行删除对应字段定义后的NOT NULL约束。

内容的提问来源于stack exchange,提问作者SGA-AllStar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:03