我正在建立一個數據庫,並且有幾個表需要在創建/更新行之前檢查許多行間依賴關係。有許多來源的max/min/avg/stdev字段。在SQL Server中尋找用戶友好的CheckConstraint錯誤消息的策略
我想我會創建一些約束條件,確保max> = min,avg> = min,對所有關係都使用avg < = max,stdev> = 0。這樣我在數據庫中進行設置,任何觸摸數據的東西都會引發錯誤。這種機制很好地工作......除了從用戶的角度來看錯誤消息是可怕的這一事實之外,基本上說約束失敗並將其留給用戶以確定20個約束條件中的哪一個是壞的。
我可以在客戶端代碼中通過查看約束異常,然後運行數據來查找問題來解決此問題。該解決方案有驗證發生在兩個地方...
我不能有我希望分配一個錯誤消息給每個約束(在數據庫中),並通過異常機制將該消息過濾到UI。是否有一些機制讓用戶友好的消息滲透到UI而不復制業務邏輯中的數據驗證?更重要的是,這類問題的基本策略是什麼?
同意:業務和驗證邏輯應該意味着數據庫永遠不會拋出錯誤。但是RDBMS負責數據完整性。 – gbn 2011-05-25 08:10:54
因此,通常客戶端不應該依賴於數據驗證的檢查約束?對於這個例子來說,風險很低,因爲沒有幻數,(max> =最小的東西)。 – Hucker 2011-05-25 08:52:10