如何在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