2017-10-19 8 views
0

は、ここに私のメインテーブルです:私はすでに別の表のeno参照してきたという理由だけでtitleを参照したい「従業員」参照テーブルの指定されたキーに一致するユニーク制約はありません1

create table employee 
(
    eno SERIAL primary key, 
    ename varchar(100) not null, 
    title varchar(100) not null 
); 

create table pay 
(
    title varchar(100), 
    sal money not null, 

    foreign key(title) references employee(title) 
); 

が、私はそこに参照されるテーブルのために与えられたキーに一致するユニーク制約ではない「従業員」というエラーが出る1

私を助けてください。私はこのエラーを解決するのに苦労しています。私はまだSQLの初心者です。ありがとうございました

+1

enoへの外部キーを使用します'employee'の列' eno') - 別のテーブルの任意の列を参照するだけではいけません –

+0

一意のキーで任意の列(または列の集合)を参照できます。それらは主キーである必要はありません。あなたの 'title'カラムの値が一意であれば、そのカラムをユニークに宣言してから参照することができます - しかし、一般に一列の主キーを持っていれば、一意の別のカラムを使用する正当な理由はありませんキーを外部キー関係のターゲットとして使用します。 –

答えて

0

特定のテーブルを参照できるテーブルの数に制限はありません。
外部キーは主キーのみを参照することがあります。 ( `pay`)は*のみ*ここで(別のテーブルの主キー** **を参照することができる一つのテーブルから** **外部キー

create table pay 
(
    eno varchar(100), 
    sal money not null, 

    foreign key(eno) references employee(eno) 
); 
関連する問題