以多對多關係更新
回答
有很多方法對皮膚這隻貓,一些技巧,我能想到的:
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