回答
,如果你有設置的外鍵DELETE CASCADE,它會採取與修剪你的數據庫只刪除主照顧WHERE ID =:X
這只是2005+。 – 2009-12-03 18:53:24
使用舊版本的MS SQL Server不符合「最佳實踐」;) – 2009-12-03 19:01:44
@OMG,Sql 2000包含引用密鑰級聯(即在刪除/更新級聯上) - 也許回答是編輯刪除原來存在的東西在刪除/更新集x)這是隻有2005+,但標準刪除級聯可用Sql 2000+ – chadhoc 2009-12-03 19:06:58
如果通過存儲執行所有的數據訪問程序,那麼你的刪除存儲過程的主人應該照顧這一點。當你添加一個新的相關表格時,你需要維護它,但是IMO要求你考慮你在做什麼,這是一件好事。
就我個人而言,我遠離級聯刪除。當用戶應該被警告過現有的孩子時,意外地刪除大量記錄太容易了。
+1 - 我從來沒有見過一個案例在我曾經從事過要求級聯刪除的系統中。我們要麼不刪除東西(因爲它們太重要了 - 例如Patient,Patient Detail),或者我們通常使用的外鍵永遠不能刪除,因爲鏈接到它們的東西太多了(例如查找,代碼表,等等) – 2009-12-03 21:48:33
很多時候刪除數據庫中某些東西的最好方法是通過設置IsDeleted列「虛擬」刪除它,然後忽略所有其他查詢中的行。
對於大量鏈接的表,刪除操作可能非常昂貴,並且在發生刪除操作時,鎖可能導致其他查詢失敗。
您可以在系統中永遠保留「IsDeleted」行(這可能對審計有幫助),或者在系統空閒時回退並刪除它們。
這當然會使所有選擇過濾掉已刪除的行。我不確定你可以從性能角度證明這一點,假設你有更多的選擇而不是刪除。但是,出於審覈/撤銷的目的,我同意這是經常需要的。 – Draemon 2012-05-15 13:01:32
- 1. 最佳實踐:數據庫引用表
- 2. 數據庫最佳實踐
- 3. NHibernate刪除最佳實踐
- 4. 最佳實踐
- 5. 使用數據庫最佳實踐?
- 6. 用戶表數據庫最佳實踐
- 7. 爲數據庫實體啓用「取消刪除」的最佳實踐?
- 8. 最佳實踐,用於存儲圖像引用數據庫
- 9. XML引用最佳實踐
- 10. 最佳實踐從數據庫
- 11. Sqlite數據庫連接最佳實踐
- 12. 數據庫部署最佳實踐
- 13. 最佳實踐數據庫設計
- 14. Yii2數據庫架構最佳實踐
- 15. Android數據庫最佳實踐
- 16. 數據庫ID最佳實踐
- 17. 最佳實踐/ MariaDB的數據庫
- 18. 數據庫連接最佳實踐
- 19. 類和數據庫的最佳實踐
- 20. 數據庫最佳實踐 - 狀態
- 21. Android數據庫連接最佳實踐
- 22. 數據庫同步 - 最佳實踐
- 23. 數據庫設計最佳實踐
- 24. 最佳實踐在數據庫表
- 25. 數據庫曝光:最佳實踐
- 26. 版本數據庫的最佳實踐
- 27. 數據庫備份最佳實踐
- 28. Android數據庫最佳實踐?
- 29. 最佳實踐SCRIPT安裝數據庫
- 30. 數據庫索引應用程序 - 最佳實踐
什麼版本的SQL Server?好閱讀:http://www.mssqlcity.com/Articles/General/using_constraints.htm – 2009-12-03 18:52:49