如何在SQL Server中更新具有唯一值的表FK列?

如何在SQL Server中更新具有唯一值的表FK列?,sql,sql-server,Sql,Sql Server,我有两个表部门和工人 Departments表有一个ManagerID列。我从Workers.ID中选择managerID,并将其添加到Departments.managerID,但没有人可以同时成为不同部门的经理。如何在更新查询中控制它 部门表 工人表 如果要阻止经理担任多个部门的经理,最简单的方法是在ManagerID列的Departments表上创建唯一索引 create unique nonclustered index UX_ManagerID on Departments (Man

我有两个表
部门
工人

Departments
表有一个
ManagerID
列。我从
Workers.ID
中选择managerID,并将其添加到
Departments.managerID
,但没有人可以同时成为不同部门的经理。如何在更新查询中控制它

部门表

工人表


如果要阻止经理担任多个部门的经理,最简单的方法是在ManagerID列的Departments表上创建唯一索引

create unique nonclustered index UX_ManagerID on Departments (ManagerID)
where ManagerID is NOT NULL;
现在,所有试图让经理成为多个部门老板的更新和插入都将失败。
错误消息中将显示名称“UX_ManagerID”,以便您可以在异常消息中检查该名称,并向用户发送一条好消息。

如果要阻止经理担任多个部门的经理,最简单的方法是在ManagerID列的Departments表上创建唯一索引

create unique nonclustered index UX_ManagerID on Departments (ManagerID)
where ManagerID is NOT NULL;
现在,所有试图让经理成为多个部门老板的更新和插入都将失败。
在错误消息中,名称“UX_ManagerID”将出现,因此您可以在异常消息中检查该名称,并向用户发送一条好消息。

您想在
部门中添加
Workers.ID
。ManagerID
仅当ID不同时才出现?是的,每个经理都必须是唯一的。您可以提供一些示例数据吗?可能在更新前后在表中显示三条或四条记录?如果这是一条经理只能管理一个部门的规则,那么我会在触发器中选中这一点并阻止更新/插入,或者更容易在部门上创建一个唯一的约束。经理是否要在中添加
Workers.ID
Departments.ManagerID
只有在id不同的情况下才可以使用?是的,每个经理都必须是唯一的。您能提供一些示例数据吗?可能在更新前后在表中显示三条或四条记录?如果这是一条经理只能管理一个部门的规则,那么我会在触发器中对此进行检查并阻止更新/插入,或者更容易在部门上创建唯一约束。ManagerID