我有一个多对多表,用于存储用户可以拥有的每个允许角色的记录。如果用户更新其角色(添加和删除)角色,我应该如何处理?
我应该先删除所有用户角色,然后添加选定的角色吗?或者进行某种匹配?
最佳答案
给这只猫剥皮的方法有很多,我能想到的一些技巧:
<强>1。删除所有角色并重新插入
这是一种直接的方法。删除用户的所有角色,然后重新插入。通常用户只属于少数角色(少于 10 个)。此外,很可能没有其他外键链接到这个多对多表。
<强>2。跟踪更改并仅应用更改
这会增加工作量,但也会提高效率,即使在本例中只是稍微提高一点点。像 ORM
这样的工具使跟踪和应用这些类型的更改变得轻而易举。
<强>3。在用户进行更改时应用更改
在这种情况下,我假设当最终用户将用户与角色关联时应用数据库更改是可以接受的。也许它是一个本地数据库,每个事务都是短暂的。但我认为这种情况不太可能发生。
我认为删除并重新插入这种特殊情况没有什么问题。
关于sql-server - 以多对多关系进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9334766/