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