假设我有一个Managers
包含字段Id
和Name
. 还有另一个Accounts
包含字段Id
和的表Name
。这两个表的关系在一个多对多表中定义,该表具有和ManagedAccounts
的复合键。因此,您可以在某个帐户上拥有多个经理,但不能多次在该帐户上拥有同一个经理。ManagerId
AccountId
现在,我有一个名为 MergeAccounts 的存储过程,它接受一个 Manager Id 和一个以逗号分隔的 varchar 形式的 Manager Id 列表。它目前看起来很像这样:
create procedure MergeAccounts @managerId nvarchar(12), @mergedManagers nvarchar(max) as declare @reassignment nvarchar(max)
set @reassignment='update ManagedAccounts set ManagerId='+@managerId+' where ManagerId in ('+@mergedManagers+')'
exec sp_executesql @reassignment
由于两个经理可能在同一个帐户上,它会给我一个错误,说我违反了我在该表上的复合键。我如何需要构造我的代码以简单地删除任何冗余行而不考虑顺序?