2009-06-06 90 views
3

在從表中刪除行之前,是否有任何簡單的方法檢查它是否會違反參照完整性規則?我想從C#贏表單應用程序做到這一點(.NET 3.5)使用SQL Server 2005在刪除之前檢查參照完整性規則違規

+0

我不知道有任何這樣的技術,但如果有這樣的技術存在,我想你用來訪問數據庫的特定技術將是一個非常基本的信息。 – 2009-06-06 18:23:21

回答

1

有浮現在腦海中的幾個可能的選擇:

  • 設置級聯在數據庫中刪除,以便刪除將始終成功。
  • 刪除前使用SELECT檢查相關記錄。這要求應用程序知道約束條件。
  • 一個好的域模型(業務類)應該允許應用程序知道相關記錄。
  • 一個O/R映射器,比如NHibernate,可以用來定義級聯刪除操作。
  • 使用SMO(Microsoft.SqlServer.Smo)檢查數據庫模式的關係,然後檢查現有的相關記錄。我不知道這是否可能。
1

你可能會做一個事務中的刪除:

try 
{ 
    begin transaction 
    delete row 
} 
catch SQLException 
{ 
    if SQL error indicates referential integrity violation 
    throw ReferentialIntegrityViolationException 
} 
finally 
{ 
    rollback transaction 
} 

(假設你永遠都不想刪除發生在你的代碼這一點)

+0

我認爲這個想法是確定一個規則是否被違反,而沒有實際執行刪除的性能成本。此解決方案具有所有性能問題並且沒有任何好處;) – 2009-06-06 18:30:59