SQL将外键添加到现有列
如果我在SQL Server 2008中使用以下SQL命令来更新具有外键约束的表:
ALTER TABLE Employees ADD FOREIGN KEY (UserID) REFERENCES ActiveDirectories(id)
UserID
是Employees
表中的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