2011-11-14 8 views
2

まず、私はdbとsqlの真の初心者です。しかし、私はテーブル、PERSONとSPECIESを持っていなければなりません。テーブルSPECIESに外部キーを追加したいと思います。外部キーを追加しようとすると、エラーメッセージ "ORA-900904:invalid identifier"が表示されます。私は何が間違っていたのか、それがなぜうまくいかないのか分かりません。oracle sql:テーブルに外部キーを追加できません - >無効な識別子ですか?

これは私のアプローチでした:

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

種テーブルと主キー

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

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

この部分は「うまく働いたが、次のdidn仕事:

PERSON

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

を参照する種のための外部キー私はいつもこのエラーを取得し、「ORA-900904:無効な識別子」

答えて

4

あなたは、テーブルspeciesの列ではありませんどのpersidにrefereingされているので、エラー...

EDIT - コメントを1として:

それはあなたがでいくつかの列が必要であることを意味しを外部キーとして使用する...そのような列がない場合は、その制約を作成する前にその列を作成する必要があります。このように:

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はオプションまたは必須である場合があります。

+0

これは、種表の属性を事前に構築する必要があることを意味しますか? – samjam

+0

@samjamはい、 '種別 'の列を外部キーとして使用する必要があるということです。そのような列がない場合は、その制約を作成する前に構築する必要があります。 – Yahia

+0

@samjam助けていただいた回答を忘れずにマークしてください(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workを参照) – Yahia

関連する問題