【问题标题】:Trouble With ORA-00922 error in SQL Developer 17.2SQL Developer 17.2 中出现 ORA-00922 错误的问题
【发布时间】:2018-12-11 21:18:23
【问题描述】:

我目前正在为一个班级项目使用 SQL 编码并收到以下错误:

错误报告 - ORA-00922: 缺少或无效选项 00922. 00000 - “缺少或无效选项” *原因:
*行动: 从第 1 行开始的错误命令 -

我的代码如下所示:

create table Admini(
    Admin_ID number(8) primary key, 
    EmployeeID number(8) references EmployeeInformation(EmployeeID), 
    BookingID number(8) references Booking(BookingID)
)

create table Booking(
    BookingID number(8) primary key, 
    CustomerID number(8) references Customer(CustomerID), 
    VehicleID number(8) references vehicle(VehicleID), 
    AdminID number(8) references Admini(AdminID), 
    BookingDate date not null, 
    BookingDestination varchar2(30) not null, 
    NumPassengers number(6) not null, 
    SecondDriverNeeded varchar2(5) check(SecondDriverNeeded in('TRUE','FALSE')), 
    DrivingDuration number(3) not null
)

create table Customer(
    CustomerID number(8) primary key, 
    CompanyName varchar2(30) not null, 
    ContactName varchar2(30) not null, 
    CustomerAddress varchar2(30) not null, 
    CustomerEmail varchar2(30) not null, 
    ContactNumber number(10) not null
)

create table Driver(
    DriverID number(8) primary key, 
    EmployeeID number(8) references Admini(AdminID), 
    DLicenseNum varchar2(16) references DLicense(DLicenseNum), 
    PCVSerialNum number(20) references PCV(PCVSerialNum), 
    CPCSerialNum number(20) references CPC(CPCSerialNum), 
    DrugTestID number(8) references DrugTest(DrugTestID), 
    DriverBreakLength number(3) not null
)

create table CPC(
    CPCSerialNum number(20) primary key, 
    CPCExpiryDate date not null
)

create table DLicense(
    DLicenseNum varchar2(16) primary key, 
    DLExpiryDate date not null, 
    PenaltyPoints number(2) not null
)

create table DrugTest(
    DrugTestID number(8) primary key, 
    TestDate date not null, 
    TestResults varchar2(8) check(TestResults in ('POSITIVE','NEGATIVE')), 
    TestType varchar2(7) check(TestType in ('DRUG','ALCOHOL','BOTH'))
)

create table EmployeeInformation(
    EmployeeID number(8) primary key, 
    EmployeeFirstName varchar2(30) not null, 
    EmployeeLastName varchar2(30) not null, 
    EmployeeAddress varchar2(30) not null, 
    EmployeeHomePhone number(10) not null, 
    EmployeeDOB date not null, 
    EmployeeGender varchar2(6) check(EmployeeGender in ('MALE','FEMALE','OTHER')), 
    EmployeePosition varchar2(6) check(EmployeePosition in ('ADMIN','DRIVER')), 
    EmployeeInsuranceNum varchar2(9) unique, 
    EmployeeSalary number(10) not null
)

create table PCV(
    PCVSerialNum number(20) primary key, 
    PCVExpiryDate date not null
)

create table Vehicle(
    VehicleID number(8) primary key, 
    DriverID number(8) references Driver(DriverID), 
    VehicleAvailable varchar2(5) check(VehicleAvailable('TRUE','FALSE')), 
    VehicleRate number(4) not null, 
    VehicleModel varchar2(10) not null, 
    VehicleMake varchar2(10) not null, 
    DateOfRegistration date not null, 
    RegistrationNumber number(8) unique, 
    VehicleColour varchar2(10) not null
)

是什么导致了我的错误?

【问题讨论】:

  • 您是否尝试运行单个表?你有一堆东西如果你测试一个表来看看实际错误在哪里会更容易

标签: sql oracle debugging syntax syntax-error


【解决方案1】:

您正在使用的工具以及您使用该工具的方式将决定您是否需要“;”或不在语句之间。

您的表的其中一个语法是错误的。

create table Vehicle(
    VehicleID number(8) primary key, 
    DriverID number(8) references Driver(DriverID), 
    VehicleAvailable varchar2(5) check(VehicleAvailable IN ('TRUE','FALSE')), -- you forgot the IN keyword
    VehicleRate number(4) not null, 
    VehicleModel varchar2(10) not null, 
    VehicleMake varchar2(10) not null, 
    DateOfRegistration date not null, 
    RegistrationNumber number(8) unique, 
    VehicleColour varchar2(10) not null
);

另外,我建议您将 FK 约束设置为 ALTER TABLE ADD CONSTRAINT 与内联约束。这样您就可以创建所有表、添加约束,而不必担心循环引用或在脚本中正确获取顺序。

像这样,但所有的改动都在你的脚本末尾。

CREATE TABLE admini (
    admin_id     NUMBER(8) PRIMARY KEY,
    employeeid   NUMBER(8),
    bookingid    NUMBER(8) );

ALTER TABLE admini
    ADD CONSTRAINT admini_employeeinformation_fk FOREIGN KEY ( employeeid )
        REFERENCES employeeinformation ( employeeid )
    ENABLE;

ALTER TABLE admini
    ADD CONSTRAINT admini_booking_fk FOREIGN KEY ( bookingid )
        REFERENCES booking ( bookingid )
    ENABLE;

【讨论】:

    猜你喜欢
    • 2015-06-18
    • 2013-05-16
    • 2014-10-31
    • 1970-01-01
    • 2014-06-23
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多