Transaction

父子記錄 - 級聯刪除或事務?

  • June 11, 2015

我即將創建一個父子表。在計劃如何對這些數據進行 CRUD 操作時,我想知道在刪除數據時有什麼更好的設計。

我正在使用 SQLite。我知道對於許多數據庫,您可以設置級聯刪除。假設我正確設置了關係以支持這種類型的功能,我的問題如下:

刪除父記錄時使用級聯刪除功能更好,還是我可以堅持使用事務,並自己手動從父/子表中刪除,當出現故障時回滾?

前端是一個 Web 應用程序。您可以指出我的任何建議/文章都會很棒。

這取決於數據的需求,也是一種設計偏好。擁有CASCADE ON DELETE可以是一個更清晰的實現並更好地描述數據的關係。

本文介紹的研究表明,CASCADE ON DELETE與 SQLite 中的直接刪除相比,實際上性能略有下降。但是,除非您的負載始終很高,否則這應該不是問題。

Database    Speedup    CPU decrease
MySQL         45%        25%
Oracle        28%        11%
PostgreSQL    56%        55%
SQL Server    17%        22%
SQLite        -11%      -75%

http://www.codesynthesis.com/~boris/blog/2012/04/12/explicit-sql-delete-vs-on-delete-cascade/

引用自:https://dba.stackexchange.com/questions/103786