#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) );