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

Oracle SQL创建多对多关系中间表失败,报ORA-00936错误

ORA-00936: missing expression 错误解决(创建Appointment中间表失败)

错误原因

你的Appointment表创建语句存在两处问题:

  • 主键约束的字段列表写错:你在主键中使用了Oracle关键字Date和Time,但这两个不是你定义的实际字段名(实际字段为date_Created和time_Created),Oracle无法识别关键字作为字段名,因此抛出"缺少表达式"错误。
  • 数据类型不兼容:Oracle SQL没有单独的TIME数据类型,若要存储时间部分,建议改用TIMESTAMP类型,或者直接用DATE(Oracle的DATE类型本身包含日期和时间信息)。

修正后的完整代码

CREATE TABLE Doctor
(
    Doctor_ID int,
    Doctor_FName VARCHAR(30) NOT NULL,
    Doctor_LName VARCHAR(30) NOT NULL,
    Department_ID int,
    Doctor_Phone_Number VARCHAR(15),
 
    CONSTRAINT PK_Doctor_ID PRIMARY KEY (Doctor_ID),
    CONSTRAINT FK_Doctor_DepartmentID 
        FOREIGN KEY (Department_ID) REFERENCES Department(Department_ID)
);

CREATE TABLE Patient
(
    Patient_ID int,
    Patient_FName VARCHAR(20) NOT NULL,
    Patient_LName VARCHAR(20) NOT NULL,
    Patient_Address VARCHAR(50),
    Patient_Phone_Number VARCHAR(15),

    CONSTRAINT PK_Patient_ID PRIMARY KEY (Patient_ID)
);

CREATE TABLE APPOINTMENT
(
    Patient_ID int,
    Doctor_ID int,
    date_Created Date,
    -- 替换Time为TIMESTAMP,适配Oracle数据类型规范
    time_Created TIMESTAMP,
 
    -- 修正主键字段为实际定义的字段名
    CONSTRAINT PK_PatientDoctorID_Appointment 
        PRIMARY KEY (Patient_ID, Doctor_ID, date_Created, time_Created),
    CONSTRAINT FK_PatientID_Appointment  
        FOREIGN KEY (Patient_ID) REFERENCES Patient(Patient_ID),
    CONSTRAINT FK_DoctorID_Appointment 
        FOREIGN KEY (Doctor_ID) REFERENCES Doctor(Doctor_ID)
);

关键修改说明

  1. 主键约束:将(Patient_ID, Doctor_ID, Date, Time)改为(Patient_ID, Doctor_ID, date_Created, time_Created),使用实际字段名而非Oracle关键字。
  2. 数据类型:将time_Created Time调整为time_Created TIMESTAMP,符合Oracle的数据类型规范。如果不需要高精度时间,也可以直接用DATE类型存储时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:40:08