Oracle SQL устанавливает первичный и внешний ключ с ограничением - PullRequest
0 голосов
/ 14 декабря 2018
CREATE TABLE DriverTest
            (DTest_ID number(8),
            DTest_Type varchar2(50) NOT NULL,
            DTest_Date date NOT NULL,
            DTest_Result varchar2(50) NOT NULL,
            CONSTRAINT pk_DTestID PRIMARY KEY(DTest_ID));
            CONSTRAINT fk_EmployeeData FOREIGN KEY (Employee_ID) REFERENCES (Employee_ID));

CREATE TABLE Employee
        (Employee_ID number(8),
        Em_Name varchar2(50) NOT NULL,
        Em_Address varchar2(50) NOT NULL,
        Home_no number(15) NOT NULL,
        Em_no varchar2(30) NOT NULL,
        DoB date NOT NULL,
        Gender  varchar2(50) NOT NULL,
        NI_no number(10) NOT NULL,
        Annual_Salary number(10) NOT NULL,
        CONSTRAINT pk_EmployeeID PRIMARY KEY(Employee_ID));

Почему это не выполняется?Он работал с моими первыми двумя таблицами: клиент-наниматель, а сотрудник-водитель: там указано:

недопустимый идентификатор Employee_ID, ORA-00904 и 00904 00000 - недопустимый идентификатор

Я думал, что я объявил основной и иностранный?Могу ли я получить помощь, я посмотрел на аналогичный запрос, но у них у всех тот же сценарий, что и у меня.

Ответы [ 2 ]

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

В вашем коде есть несколько ошибок. Здесь - это рабочая версия в db <> fiddle.

Некоторые проблемы:

  • Таблица Employees должна быть определена перед может использоваться в отношениях внешнего ключа.Следовательно, таблицы расположены в неправильном порядке.
  • Столбец, используемый во внешнем ключе, должен быть объявлен.Итак, EmployeeId необходимо объявить в DriverTests.
  • У вас есть лишние точка и точка с запятой во втором определении таблицы.

Я изменил имена таблиц набыть во множественном числе, потому что именно так я бы их назвал.

Рабочий код:

CREATE TABLE Employees (
        Employee_ID number(8),
        Em_Name varchar2(50) NOT NULL,
        Em_Address varchar2(50) NOT NULL,
        Home_no number(15) NOT NULL,
        Em_no varchar2(30) NOT NULL,
        DoB date NOT NULL,
        Gender varchar2(50) NOT NULL,
        NI_no number(10) NOT NULL,
        Annual_Salary number(10) NOT NULL,
        CONSTRAINT pk_EmployeeID PRIMARY KEY(Employee_ID)
 );

CREATE TABLE DriverTests (
        DTest_ID number(8),
        Employee_ID number(8),
        DTest_Type varchar2(50) NOT NULL,
        DTest_Date date NOT NULL,
        DTest_Result varchar2(50) NOT NULL,
        CONSTRAINT pk_DTestID PRIMARY KEY (DTest_ID),
        CONSTRAINT fk_EmployeeData FOREIGN KEY (Employee_ID) REFERENCES Employees(Employee_ID)
);
0 голосов
/ 14 декабря 2018

Ваш порядок создания таблицы неверен.Сначала необходимо создать таблицу сотрудников:

CREATE TABLE Employee
    (Employee_ID number(8),
    Em_Name varchar2(50) NOT NULL,
    Em_Address varchar2(50) NOT NULL,
    Home_no number(15) NOT NULL,
    Em_no varchar2(30) NOT NULL,
    DoB date NOT NULL,
    Gender  varchar2(50) NOT NULL,
    NI_no number(10) NOT NULL,
    Annual_Salary number(10) NOT NULL,
    CONSTRAINT pk_EmployeeID PRIMARY KEY(Employee_ID)); 

CREATE TABLE DriverTest
        (DTest_ID number(8),
        DTest_Type varchar2(50) NOT NULL,
        DTest_Date date NOT NULL,
        DTest_Result varchar2(50) NOT NULL,
        CONSTRAINT pk_DTestID PRIMARY KEY(DTest_ID));
        CONSTRAINT fk_EmployeeData FOREIGN KEY (Employee_ID) REFERENCES (Employee_ID));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...