2014-04-22 81 views
0

這是一個很奇怪的問題,我相信你們中的一些人,但是自學成才,我從來沒有讓別人給我最好的實踐。程序邏輯是否應該強化數據庫邏輯?

總之,讓我們假設我有鏈接到另一個數據庫表(表2)數據庫表(表1)。它們之間存在的關係,以指定應在表1中的記錄被刪除,無操作應在表2中可以採取 - 加強參照完整性和從表1中停止記錄,如果有錶鏈接的記錄被刪除2.

因此,如果我以編程方式刪除表1中已鏈接表2中的記錄(例如使用ADO.NET)的記錄,則會出現錯誤。

的問題是,我應該甚至請求記錄的刪除前檢查鏈接的記錄強化的邏輯。就我所見,這在檢查(查詢)上增加了一倍,併爲改變數據庫中關係的人提供了額外的安全性,但確保邏輯仍然遵守 - 每次檢查的資源成本很低,但是什麼是正確的方式???

+0

我不熟悉C#。試圖從C#中刪除記錄會拋出一個有意義的異常(因爲數據庫阻止執行)? – nhgrif

+0

@nhgrif從內存中,我認爲你會得到一個相當通用的SqlException(如果使用SQL)。內部消息然後給出了一個更詳細的問題。 –

回答

2

檢查您嘗試之前刪除似乎是一個好主意,但IMO它是一點點多餘的(除非你只有1個用戶),因爲它並不能保證它是安全的刪除,數據庫的狀態可能非常容易被其他用戶在執行檢查和發出刪除命令之間進行更改。

我先給數據庫處理刪除,然後趕上,如果他們的代碼中引發處理特定的異常。我想你會在這種情況下得到一個SqlException,然後你需要檢查你想要處理的錯誤的錯誤代碼。

+0

這個答案很有意義,主要依據我目前的思路。謝謝。 –