SQL将外键添加到现有列

如果我在SQL Server 2008中使用以下SQL命令来更新具有外键约束的表:

ALTER TABLE Employees ADD FOREIGN KEY (UserID) REFERENCES ActiveDirectories(id) 

UserIDEmployees表中的FK列。 我想在我的ActiveDirectories表中引用UserID 。 我收到这个错误:

外键'UserID'在引用表'Employees'时引用无效列'UserID'。

错误表示您的Employees表中没有UserID列。 尝试先添加列,然后重新运行语句。

 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 

是否该列在Employees表中被称为ID ,而在ActiveDirectories表中是UserID

那么你的命令应该是:

 ALTER TABLE Employees ADD FOREIGN KEY (ID) <-- column in table "Employees" REFERENCES ActiveDirectories(UserID) <-- column in table "ActiveDirectories" 

MySQL / SQL Server / Oracle / MS访问:

 ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) 

要允许FOREIGN KEY约束的命名,以及在多个列上定义FOREIGN KEY约束,请使用以下SQL语法:

MySQL / SQL Server / Oracle / MS访问:

 ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) 

外键创build正确的ActiveDirectories(id)的方式,我认为主要的错误是你没有提到ActiveDirectories表中的id的主键

 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