2011-01-08 10 views
1

假設有一個Table1,其主鍵爲「MainID」,並且該MainID在許多表中用作外鍵。檢查所有外鍵的使用位置

現在,當我試圖刪除表1的紀錄誰是MainID爲外鍵在某些子表被使用,那麼它會拋出這個異常「外鍵衝突ñ東西」 ..

現在我想設計我的Delete Strored過程,首先檢查所有具有該外鍵列「MainID」的子容器,並且如果Table1中的MainID在任何子表中使用,則它應該返回0。基於這個0值,我想要一個警告框來顯示將會說「仍在使用或watever」,並且不會讓用戶刪除該記錄,除非子表中的所有記錄已被刪除,並且使用table1中的mainID。

我不能使用ON DELETE CASCADE。我希望用戶逐個手動刪除子表記錄。只有在刪除使用MainID的子表記錄後,用戶才能刪除表1中的記錄

回答

2

我會考慮使用TRY/CATCH(在c#或SQL Server中)來捕獲正確的SQL錯誤編號。

鑽入系統表並查找鏈接很簡單,但是對於每個子表而言,這是一個動態查詢。

+0

+1在ASP.NET C#中捕捉這絕對是最好的;使用Exception.Number來檢查它是否是外鍵違例 – Andomar 2011-01-08 14:41:53