Не удается получить внешний ключ

#sql-server #sql-server-2008

#sql-сервер #sql-server-2008

Вопрос:

 USE Kudler_FF
ALTER TABLE Employee_Tbl
ADD CONSTRAINT FK_Employee_Tbl
FOREIGN KEY (JobTitle) REFERENCES Job_Tbl (JobTitle);
  

Сообщение, которое я получаю:

Сообщение 547, уровень 16, состояние 0, строка 2
Оператор ALTER TABLE конфликтовал с ограничением ВНЕШНЕГО КЛЮЧА «FK_Employee_Tbl». Конфликт произошел в базе данных «Kudler_FF», таблица «dbo.Job_Tbl», столбец «JobTitle».

Что я добавил или не добавил

Ответ №1:

Обычно вы получаете сообщение об ошибке добавления ограничения внешнего ключа только тогда, когда ограничение будет нарушено текущими данными.

Другими словами, у вас, вероятно, есть значение в Employee_Tbl(JobTitle) , которого не существует в Job_Tbl(JobTitle) .

Вы не сможете добавить такое ограничение до тех пор, пока ваши данные не будут изменены таким образом, чтобы не происходило нарушение.

Найдите значения для JobTitle in Employee_Tbl , которые не существуют в Job_Tbl , а затем добавьте их в эту последнюю таблицу.

Я не уверен в точном синтаксисе SQL Server, но вы могли бы начать с:

 select distinct JobTitle from Employee_Tbl
where JobTitle not in (
    select distinct JobTitle from Job_Tbl
)