Проблема с ошибкой ORA-00922 в SQL Developer 17.2 - PullRequest
0 голосов
/ 12 декабря 2018

Я в настоящее время кодирую с 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
)

В чем причина моей ошибки?

1 Ответ

0 голосов
/ 12 декабря 2018

Инструмент, который вы используете, и то, как вы его используете, определят, нужен ли вам ';'или нет между операторами.

Один из синтаксисов вашей таблицы неверен.

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 CONSTRAINTs против встроенных ограничений.Таким образом, вы можете создавать все свои таблицы, добавлять ограничения, и вам не придется беспокоиться о циклических ссылках или получении порядка просто в ваших скриптах.

Так что-то вроде этого, но все измененияв конце вашего сценария.

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;
...