oracle sql:无法将外键添加到表 -> 标识符无效?

sam*_*jam 4 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)
;
Run Code Online (Sandbox Code Playgroud)

SPECIES 表和主键

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

alter table Species
add constraint species_pk
primary key (vartid)
;
Run Code Online (Sandbox Code Playgroud)

这部分工作正常,但以下不起作用:

指代人的物种的外键

alter table species
add constraint species_person_fk
foreign key (persid)
references person (persid)
;
Run Code Online (Sandbox Code Playgroud)

我总是收到此错误“ORA-900904:无效标识符”

Yah*_*hia 5

您所指的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)
;
Run Code Online (Sandbox Code Playgroud)

根据您的数据模型,SPECIES.PERSID 可能是可选的或强制性的。