oracle sql:无法向表中添加外键 - >不合法的识别符?

时间:2011-11-14 09:20:27

标签: sql oracle foreign-keys foreign-key-relationship

首先,我是db和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)
;

这部分工作正常,但以下没有成功:

SPECIES的外键指PERSON

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

我总是得到这个错误" ORA-900904:无效的标识符"

1 个答案:

答案 0 :(得分:4)

您正在引用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可能是可选的或必须的。