2015-10-01 3 views
-1

В ссылочной таблице «Сотрудник» нет первичных или потенциальных ключей, которые соответствуют списку столбцов ссылок в внешнем ключе.Ошибка в SQL Server при добавлении внешнего ключа

Я уже установил ссылку в качестве первичного ключа, но все еще получаю ошибку.

Create table Employee 
(
    Fname varchar(20), 
    Mint varchar(1), 
    Lname varchar(20), 
    Ssn int, 
    Bdat date, 
    [Address] varchar(50), 
    Sex varchar(1), 
    Salary int, 
    Super_ssn int, 
    Dno int 
) 

Create table Department 
(
    Dname varchar(20), 
    Dnumber int, 
    Mgr_ssn int, 
    Mgr_start_date date 
) 

Alter table Employee 
alter column Ssn int NOT NULL 
alter column Super_ssn int NOT NULL 

alter table Employee 
add primary key (Ssn, Super_ssn) 

alter table Department 
add foreign key (Mgr_ssn) 
    References Employee (Ssn) 
+1

Можете ли вы включить инструкции схемы (или CREATE TABLE) для таблиц, к которым вы добавляете отношение, а также столбцы, на которые вы ссылаетесь? – Keith

+0

Хорошо @ArtjomB. Отредактировал вопрос – bilcy

+1

Замечание: 'varchar (1)' довольно бессмысленно - он будет использовать 2-3 байта памяти для хранения не более 1 символа. Для короткой строки вы должны использовать 'char (1)' - который принимает только 1 байт и будет с радостью хранить весь ваш символ - или NULL –

ответ

3

У вас есть композитный PK в таблице сотрудников (Ssn, Super_ssn), но вы пытаетесь сослаться на него с одной колонкой (Mgr_ssn).

Либо замените PK на Ssn, либо добавьте другой столбец к внешнему ключу.