оракул sql: не удалось добавить внешний ключ в таблицу -> неверный идентификатор? - PullRequest
2 голосов
/ 14 ноября 2011

Во-первых, я настоящий новичок в БД и sql.Тем не менее, у меня есть таблицы, PERSON и SPECIES, и я хочу добавить внешний ключ к таблице SPECIES.При попытке добавить внешний ключ я всегда получаю сообщение об ошибке «ORA-900904: неверный идентификатор».Я просто не могу понять, что я сделал неправильно, и почему это не работает?!?!

Это был мой подход:

таблица PERSON и первичный ключ

create table person
(
name varchar2 (30),
firstname varchar2 (30),
persid number (8) not null
)
;

alter table person 
add constraint person_pk 
primary key (persid)
;

Таблица SPECIES и первичный ключ

create table species
(
speciesnamelat varchar2 (30),
vartid number (8) not null
)
;

alter table Species
add constraint species_pk
primary key (vartid)
;

Эта часть работала нормально, но следующее не работало:

Внешний ключ для ВИДОВ, ссылающийся на ЛИЦА

alter table species
add constraint species_person_fk
foreign key (persid)
references person (persid)
;

Я всегда получаю эту ошибку "ORA-900904: неверный идентификатор"

1 Ответ

4 голосов
/ 14 ноября 2011

вы ссылаетесь на persid, который не является столбцом в таблице species, таким образом, ошибка ...

РЕДАКТИРОВАТЬ - Согласно комментариям:

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

alter table species
add persid number(8) not null
;
alter table species
add constraint species_person_fk
foreign key (persid)
references person (persid)
;

В зависимости от вашей модели данных SPECIES.PERSID может быть необязательным или обязательным.

...