我經常遇到更新問題有很多關係。 例如,我們採取以下三個表:更新標籤列表 - 或更新has_many關係
- 帖子
- 標籤
- posts_tags
當用戶創建一個新的職位,他可以添加標籤的帖子。帖子已保存,所選標籤通過_posts_tags_附加到它。
當用戶編輯帖子(也可能或不可以編輯標籤列表),並提交表格時,我必須更新帖子的標籤列表。
解決方案可能如下:更新帖子時,我從_posts_tags_刪除該帖子的所有標籤,並插入提交的帖子。
另一種解決方案是從數據庫中獲取帖子的所有標籤,將列表與提交的列表進行比較,並決定我們必須刪除的內容以及我們要插入的內容。
這兩種解決方案都很耗時。
什麼是更聰明的解決方案?
我有點疲倦,昏昏欲睡,所以忍受着我(可能讀過這個錯誤),但不是說,級聯是爲了? – Bono
@Bono:不。問題不在於如何在外部表中的相關記錄中級聯更新,而是如何檢測應用程序中哪些記錄已被修改,以便在數據庫中反映這些修改。 – eggyal
在你發佈的兩個解決方案中,第一個通常會更可取。使用索引進行刪除將比第二個要求的比較類型更快。至於找到一個更「聰明」的解決方案,你應該考慮在這裏應用[KISS原則](http://en.wikipedia.org/wiki/KISS_principle)嗎? –