Продолжайте получать Oracle ORA-00907: отсутствует правильная скобка - PullRequest
0 голосов
/ 04 апреля 2020

Мне нужно создать эти 2 таблицы:

CREATE TABLE Volunteer_Assigned_Care_Center
(
    VO_Person_ID    Number(10)   NOT NULL,
    Care_Center_ID  Number(5)   NOT NULL,
    CONSTRAINT CVOPersonID_PK PRIMARY KEY (CVO_Person_ID) References Volunteer (VO_Person_ID),
    CONSTRAINT CareCenterID_FK FOREIGN KEY (Care_Center_ID) References Care_Center(Care_Center_ID)
);

и

CREATE TABLE Volunteer_Supervisor
(
    PH_Person_ID    Number(10)   NOT NULL,
    EM_Person_ID    Number(10)    NOT NULL,
    VO_Person_ID    Number(10)   NOT NULL,
    End_Date    Date    NOT NULL,
    Begin_Date  Date    NOT NULL,
    Hours_Worked    Number(4)   NULL,
    PWork_Unit_ID    Number(4)   NULL,
    CONSTRAINT PHPersonID_FK FOREIGN KEY (PH_Person_ID) References Physician (PH_Person_ID),
    CONSTRAINT EMPersonID_FK FOREIGN KEY (EM_Person_ID) References Employee (EM_Person_ID),
    CONSTRAINT VOPersonID_FK FOREIGN KEY (VO_Person_ID) References Volunteer (VO_Person_ID),
    CONSTRAINT PWorkUnitID_PK PRIMARY KEY (PWork_Unit_ID) References Work_Unit (PWork_Unit_ID)
);

, и я получаю эту ошибку:

Отчет об ошибке -
ORA-00907: пропущена правая скобка
00907. 00000 - «пропущена правая скобка»
* Причина:
* Действие:

1 Ответ

3 голосов
/ 04 апреля 2020

Ваша проблема в том, что синтаксис, который вы используете для объявления вашего PRIMARY KEY, является FOREIGN KEY синтаксисом. Если вы хотите, чтобы эти столбцы также были PRIMARY KEY для таблицы, вы должны объявить их как таковые в другом месте, например, в определении столбца:

CREATE TABLE Volunteer_Assigned_Care_Center
(
    VO_Person_ID    Number(10)   NOT NULL PRIMARY KEY,
    Care_Center_ID  Number(5)   NOT NULL,
    CONSTRAINT CVOPersonID_PK FOREIGN KEY (VO_Person_ID) References Volunteer (VO_Person_ID),
    CONSTRAINT CareCenterID_FK FOREIGN KEY (Care_Center_ID) References Care_Center(Care_Center_ID)
);

или с PRIMARY KEY предложение:

CREATE TABLE Volunteer_Supervisor
(
    PH_Person_ID    Number(10)   NOT NULL,
    EM_Person_ID    Number(10)    NOT NULL,
    VO_Person_ID    Number(10)   NOT NULL,
    End_Date    Date    NOT NULL,
    Begin_Date  Date    NOT NULL,
    Hours_Worked    Number(4)   NULL,
    PWork_Unit_ID    Number(4)   NULL,
    PRIMARY KEY (PWork_Unit_ID),
    CONSTRAINT PHPersonID_FK FOREIGN KEY (PH_Person_ID) References Physician (PH_Person_ID),
    CONSTRAINT EMPersonID_FK FOREIGN KEY (EM_Person_ID) References Employee (EM_Person_ID),
    CONSTRAINT VOPersonID_FK FOREIGN KEY (VO_Person_ID) References Volunteer (VO_Person_ID),
    CONSTRAINT PWorkUnitID_PK FOREIGN KEY (PWork_Unit_ID) References Work_Unit (PWork_Unit_ID)
);
...