sql-server - 以多对多关系进行更新

标签 sql-server many-to-many

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

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

最佳答案

给这只猫剥皮的方法有很多,我能想到的一些技巧:

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

<强>2。跟踪更改并仅应用更改
这会增加工作量,但也会提高效率,即使在本例中只是稍微提高一点点。像 ORM 这样的工具使跟踪和应用这些类型的更改变得轻而易举。

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

我认为删除并重新插入这种特殊情况没有什么问题。

关于sql-server - 以多对多关系进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9334766/

相关文章:

sql-server - SQL Server 2012 更改数据捕获错误 14234

sql-server - SQL Server - 更新后与更新?

sql - 使用 SQL 从多个表中获取 Count(*)

sql-server - 在 SQL 2005 或 2008 中是否可以在还原时触发数据库

firebase - 在firebase中获取所属组用户的详细信息

c# - Linq-to-SQL 日期格式 : query does not work

java - Hibernate 映射复合键 ManyToMany 导致 ClassCastException

MySQL查询,多对多关系的交集

many-to-many - 使用自定义外键序列化多对多关系

java - JPA 多对多约束