我想知道何時實際使用刪除級聯或刪除限制AND更新級聯或更新限制。我很困惑使用它們或應用在我的數據庫中。關於[刪除(級聯/限制)]和更新(級聯/限制)的後續處理
1
A
回答
3
對外鍵約束使用級聯運算符是一個熱門話題。從理論上講,如果您知道刪除父對象時也會自動刪除其所有子對象,那麼在子表和父表之間的鏈接上的級聯刪除可能是有意義的。
想象一下由「零件」組成的「機器」。如果您的邏輯說如果機器被刪除,組成該機器的所有零件也將從數據庫中清除,那麼您可以在零件表和機牀表之間的外鍵鏈接上使用級聯刪除選項。
但是:這可能有點棘手,特別是如果您最終擁有與此選項鍊接的整個鏈表。因此,很多開發人員傾向於在他們自己的數據訪問代碼中處理這個問題,而不是在數據庫中定義它。
更新級聯通常在父表上的主鍵更改時使用 - 以更新所有相關的子表和行以反映該更改。這通常被認爲是數據庫代碼異味 - 這裏更好的選擇是確保主鍵永不改變,從而不需要這種級聯更新 - 例如,通過在你的表中引入一個人爲的「代理」鍵列,這個列沒有商業相關的含義,因此永遠不會更新。
這有幫助嗎?你還不清楚哪些細節?我的看法是這樣的:雖然這在理論上是一個好主意,但大多數開發人員並不真正在「真實生活」中使用它 - 大多數開發人員會選擇在數據訪問代碼中處理這個問題,從而使它們充分和明確控制被刪除(或更新)的內容。
0
除了marc_s說什麼..
我發現,當有這樣沒有必要延長交易時,使用更多的鎖CASCADE選項有時會產生「虛擬」更新子表,使用更多資源等
相關問題
- 1. 如何使用phpmyadmin添加刪除級聯和更新限制?
- 2. 級聯更新和刪除
- 3. 創建的更新和刪除級聯
- 4. SQL,在刪除級聯和更新級聯
- 5. 有源模型串行器中的限制關聯級聯
- 6. 從Oracle SQL Developer的結果中刪除級聯限制
- 7. mysql如何確定要刪除的內容?級聯,限制?
- 8. Rails關聯 - 級聯更新
- 9. Zend_Db_Table級聯刪除和更新
- 10. SQL或PHP級聯更新和刪除
- 11. 級聯更新和刪除wih django
- 12. NHibernate,「在刪除級聯」,級聯刪除相關表中的行?
- 13. EF 5.0查找表設計限制級聯刪除
- 14. CakePHP限制關聯
- 15. mySQL限制級聯無動作設置
- 16. SQL限制加入/級聯結果
- 17. CoreData + iCloud +級聯刪除 - 如何處理?
- 18. MySQL - 級聯更新工作,但級聯刪除不
- 19. 續集有一個關聯限制
- 20. Unidirectionnel關係:刪除級聯
- 21. SQLAlchemy關係級聯刪除
- 22. 級聯刪除
- 23. 級聯/刪除
- 24. 級聯刪除
- 25. 關於刪除與doctrine2級聯
- 26. 關於刪除級聯休眠ManyToMany
- 27. SQL - 刪除級聯用於?
- 28. Grails的,關係和級聯刪除
- 29. Grails的刪除和級聯
- 30. 級聯刪除不與EF級聯
感謝您的迴應,得到了級聯刪除/更新的想法。真的很感謝迴應。 – John 2010-09-26 15:15:58