SQL Добавить внешний ключ в существующий столбец
Если я использую следующую команду SQL в SQL Server 2008 для обновления таблицы с ограничением внешнего ключа:
ALTER TABLE Employees
ADD FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id)
UserID
является моим столбцом FK в таблице Employees
. Я пытаюсь ссылаться на UserID
в моей таблице ActiveDirectories
. Я получаю эту ошибку:
Внешний ключ "UserID" ссылается на недопустимый столбец "UserID" в ссылках таблица "Сотрудники".
Ответы
Ответ 1
Ошибка указывает на отсутствие столбца UserID в таблице Employees. Попробуйте сначала добавить столбец, а затем снова запустите оператор.
ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id);
Ответ 2
Возможно, вы получили свои столбцы назад?
ALTER TABLE Employees
ADD FOREIGN KEY (UserID) <-- this needs to be a column of the Employees table
REFERENCES ActiveDirectories(id) <-- this needs to be a column of the ActiveDirectories table
Может ли быть, что столбец называется ID
в таблице Employees
и UserID
в таблице ActiveDirectories
?
Тогда ваша команда должна быть:
ALTER TABLE Employees
ADD FOREIGN KEY (ID) <-- column in table "Employees"
REFERENCES ActiveDirectories(UserID) <-- column in table "ActiveDirectories"
Ответ 3
MySQL/SQL Server/Oracle/MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Чтобы разрешить именовать ограничение FOREIGN KEY и определять ограничение FOREIGN KEY для нескольких столбцов, используйте следующий синтаксис SQL:
MySQL/SQL Server/Oracle/MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Ответ 4
способ создания внешнего ключа корректен для ActiveDirectories (id), я думаю, главная ошибка заключается в том, что вы не указали первичный ключ для id в таблице ActiveDirectories
Ответ 5
ALTER TABLE Faculty
WITH CHECK ADD CONSTRAINT FKFacultyBook
FOREIGN KEY FacId
REFERENCES Book Book_Id
ALTER TABLE Faculty
WITH CHECK ADD CONSTRAINT FKFacultyStudent
FOREIGN KEY FacId
REFERENCES Student StuId