以多对多关系更新
回答
有很多方法对皮肤这只猫,一些技巧,我能想到的:
1.删除所有角色和重新插入
这是一个直接的方法。删除用户的所有角色并重新插入。通常用户只属于少数角色(小于10)。另外,很有可能没有其他外键链接到这个多对多表。
2的变化跟踪和仅适用变更
这是更多的工作,但更高效,哪怕只是稍微在这种情况下。像ORMs
这样的工具可以轻松跟踪和应用这些类型的更改。
3.用户作出的改变
在这种情况下,我认为这是可以接受的应用DB变化最终用户关联用户角色应用更改。也许这是一个本地数据库,每笔交易都是短暂的。但我想这是一个不太可能的情况。
我不认为这种情况下有任何错误删除和重新插入。
如果某个人删除角色,为什么不通过userID
和roleID
并删除该记录? 为什么要删除特定userID
的所有角色ID,然后再次读取它们?
从上面我的意见,传递两个参数: UserID
和RoleID
然后你就可以删除/提取单个元组。
ui设置角色的方式是通过复选框设置的,您可以在其中检查或取消选中多个 – chobo 2012-02-17 20:27:49
@chobo - 发送多个参数,你可以使用'IN'等。无论哪种方式,如果不存在太多的角色,你可以简单地删除所有并只读取已选中的角色。 – JonH 2012-02-17 20:29:29
@JonH:笨拙的唠叨,对吗? – micahhoover 2016-10-04 12:07:59
- 1. 更新多对多关系
- 2. 更新多个多对多关系
- 3. 更新一对多关系
- 4. Linq更新多对多关系
- 5. 更新多对多有关系IDS
- 6. 更新数据透视表,以备多对多关系laravel4
- 7. 更新多对一的关系
- 8. Django:一对多的关系更新
- 9. Laravel更新一对多关系
- 10. 自动更新一对多关系
- 11. CodeIgniter/Datamapper - 更新一对多关系
- 12. 休眠 - 更新多对多关系的对象
- 13. 多对多关系
- 14. 多对多关系
- 15. 多对多关系
- 16. 多对多关系
- 17. 多对多关系
- 18. PetaPoco和多对一,一对多以及多对多关系
- 19. 以多对多的关系读取值
- 20. Count()对多对多关系
- 21. SqlAlchemy关系多对多与其他多对多关系
- 22. 核心数据多对多关系。如何更新或设置关系?
- 23. 关系有多对多关系
- 24. 重新思考MongoDB的关系多对多关系
- 25. NHibernate多对多关系不更新连接表
- 26. 休眠单向多对多更新目标成分关系
- 27. 实体框架更新许多一对多的关系 - POCO
- 28. 如何创建和更新与EF的多对多关系
- 29. 如何更新实体框架7中的多对多关系?
- 30. Laravel更新数据透视表(多对多关系)
多数民众赞成我们为什么有参数,你传递的用户ID和角色ID作为参数,然后你做:'DELETE FROM MyTable WHERE userID = @UserID AND roleID = @ RoleID' – JonH 2012-02-17 20:16:41
这实际上是一个比它似乎更好的问题表面。如果您有一个用户界面,可让您编辑表格的多边,并在用户点击保存时以批处理模式进行更新(而不是一次只进行一次),则可能会有其他用户修改您下方的表格,例如,当用户正在UI中编辑时,确定另一个用户是否添加了角色 – JohnFx 2012-02-17 20:21:12