SQL将外键添加到现有列

Exc*_*Cat 102 foreign-key-relationship sql-server-2008

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

ALTER TABLE Employees
ADD FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id)
Run Code Online (Sandbox Code Playgroud)

UserIDEmployees表中是我的FK专栏.我正试图UserID在我的ActiveDirectories表中引用它.我收到此错误:

外键'UserID'在引用表'Employees'时引用了无效的列'UserID'.

Blu*_*ict 182

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

ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
    REFERENCES ActiveDirectories(id);
Run Code Online (Sandbox Code Playgroud)


mar*_*c_s 18

也许你的列倒了?

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
Run Code Online (Sandbox Code Playgroud)

难道列被称为IDEmployees表,UserIDActiveDirectories表?

然后你的命令应该是:

ALTER TABLE Employees
ADD FOREIGN KEY (ID)                   <-- column in table "Employees"
REFERENCES ActiveDirectories(UserID)   <-- column in table "ActiveDirectories" 
Run Code Online (Sandbox Code Playgroud)


小智 5

MySQL / SQL Server / Oracle / MS 访问:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Run Code Online (Sandbox Code Playgroud)

要允许命名 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)
Run Code Online (Sandbox Code Playgroud)