首先,我是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:无效的标识符"
答案 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可能是可选的或必须的。