2017-10-19 2 views
0

Voici ma table principale:Il n'y a pas de contrainte unique de clés correspondantes données pour table référencée « employé » 1

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

Je veux référencent title seulement parce que je l'ai déjà fait référence à la eno dans une autre table.

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

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

je reçois une erreur qu'il n'y a pas de contrainte unique de clés correspondantes données pour table référencée « employé » 1

S'il vous plaît aidez-moi. J'ai du mal à résoudre cette erreur. Je suis toujours un débutant chez SQL. merci beaucoup

+1

A ** clé ** d'une table étrangère ('de pay') peut * uniquement * référence à la clé primaire ** ** d'une autre table (ici: colonne 'eno' de' employee') - vous ne pouvez pas référencer n'importe quelle colonne arbitraire dans une autre table –

+0

Vous pouvez référencer n'importe quelle colonne (ou ensemble de colonnes) avec une clé unique. Ceux-ci ne doivent pas être la clé primaire. Si les valeurs de votre colonne 'title' sont uniques, vous pouvez déclarer cette colonne unique, puis la référencer. En général, si vous avez déjà une clé primaire à colonne unique, il n'y a pas de raison d'utiliser une seule colonne unique clé comme cible d'une relation de clé étrangère. –

Répondre

0

Il n'y a pas de limite au nombre de tables pouvant référencer une table donnée.
Les clés étrangères peuvent uniquement référencer des clés primaires.

Utilisez une clé étrangère eno:

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

    foreign key(eno) references employee(eno) 
);