SQL добавить внешний ключ к существующему столбцу
если я использую следующую команду SQL в SQL Server 2008 для обновления таблицы с ограничением внешнего ключа:
ALTER TABLE Employees
ADD FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id)
UserID
будучи моей колонкой FK в Employees
таблица. Я пытаюсь ссылаться на UserID
в своем ActiveDirectories
таблица. Я получаю эту ошибку:
внешний ключ 'Id_пользователя' ссылается на неверный идентификатор колонки в ссылках таблица "сотрудники".
6 ответов:
ошибка указывает на отсутствие столбца UserID в таблице Employees. Попробуйте сначала добавить столбец, а затем повторно запустить инструкцию.
ALTER TABLE Employees ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID) REFERENCES ActiveDirectories(id);
может быть, вы получили ваши колонки назад??
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"
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
чтобы разрешить именование ограничения внешнего ключа и определить ограничение внешнего ключа для нескольких столбцов, используйте следующий синтаксис SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
способ создания внешнего ключа правильный для ActiveDirectories (id), я думаю, что основная ошибка заключается в том, что вы не упомянули первичный ключ для id в таблице ActiveDirectories