Создание таблицы с внешним ключом

#sql #database #oracle

Вопрос:

Я создаю базу данных SQL в Oracle. Я создал эту таблицу:

 CREATE TABLE LOC
(
    LID INTEGER PRIMARY KEY,
    CITY VARCHAR(50),
    STREET VARCHAR(50),
    SNUMBER VARCHAR(50)
);
 

И я попытался создать вторую таблицу, на которую ссылается внешний ключ:

 CREATE TABLE STAFF
(
    EID INTEGER PRIMARY KEY,
    NAME VARCHAR(50),
    SURNAME VARCHAR(50),
    HIREDATE DATE,
    FOREIGN KEY (LID) REFERENCES LOC(LID)
);
 

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

ORA-00904: «КРЫШКА»: недопустимый идентификатор
00904. 00000 — «%s: недопустимый идентификатор»

Ответ №1:

Определение внешнего ключа для столбца не создает столбец. Сначала вам нужно создать столбец, а затем определить его как внешний ключ.

 CREATE TABLE STAFF(
EID INTEGER PRIMARY KEY,
NAME VARCHAR(50),
SURNAME VARCHAR(50),
HIREDATE DATE,
LID INTEGER
FOREIGN KEY (LID) REFERENCES LOC(LID));
 

Ответ №2:

Это должно быть либо определение столбца плюс полное определение ограничений, либо (на мой взгляд, лучше) назовите столбец, скажите, на что он ссылается, и позвольте ему наследовать тип данных.

(Кстати, что это varchar ?)

 create table loc
( lid       integer primary key
, city      varchar2(50)
, street    varchar2(50)
, snumber   varchar2(50) );

create table staff
( eid       integer primary key
, name      varchar2(50)
, surname   varchar2(50)
, hiredate  date
, lid       references loc(lid) );