我想知道在插入和更新與讓數據庫處理它之前預先檢查外鍵查找有什麼大家的看法。如你所知,如果相應的行不存在,服務器將拋出異常。SQL FK和存在的預先檢查
在.NET中,我們總是試圖避免異常編碼,因爲它沒有使用引發的異常來驅動代碼流。這意味着我們試圖在運行時間之前檢測潛在的錯誤。
隨着SQL我看到兩個相對點
1)無論您是否選中與否數據庫總是會。這意味着你可能會浪費(多少是主觀的)CPU週期進行兩次相同的檢查。這使得一個傾向於讓數據庫只做它。
2)預檢查允許開發者將更多的信息異常提交給調用應用程序。而不是接收通用的「外鍵違規」,可以爲每個需要完成的檢查返回不同的錯誤代碼。
你的想法是什麼?
在數據庫世界中,你很少關心CPU。這是關於內存和磁盤IO,所以雙重檢查FK的存在可能會導致雙重磁盤讀取(取決於服務器負載以及在插入之前是否換出頁面) – billinkc