以多对多关系更新

时间:2012-02-17 20:13:44

标签: sql-server many-to-many

我有一个多对多表,用于存储用户可以拥有的每个允许角色的记录。如果用户更新了他的角色(添加和删除)角色,我该如何处理?

我应该首先删除所有用户角色,然后添加所选用户角色吗?或者进行某种匹配?

2 个答案:

答案 0 :(得分:7)

有很多方法可以让这只猫受到影响,我可以想到一些技巧:

<强> 1。删除所有角色并重新插入
这是一种直截了当的方法。删除用户的所有角色,然后重新插入。通常,用户只属于少数角色(少于10个)。此外,很有可能没有其他外键链接到这个多对多表。

<强> 2。跟踪更改并仅应用更改
这是更多的工作,但更有效,即使在这种情况下只是稍微。像ORMs这样的工具可以轻松跟踪和应用这些类型的更改。

第3。在用户进行更改时应用更改
在这种情况下,我假设应用数据库更改是可以接受的,因为最终用户将用户与角色相关联。也许它是一个本地数据库,每个事务都是短暂的。但我想这不太可能。

我不认为删除和重新插入此特定情况有任何错误。

答案 1 :(得分:1)

如果某人删除某个角色,为什么不通过userIDroleID并删除该记录? 为什么要删除特定userID的所有roleID,然后再次读取它们?

从我上面的评论中,传递两个参数: UserIDRoleID

然后你可以删除/提取那个单元组。