天天看點

C# 如何實體删除有主外鍵限制的記錄?存儲過程實作

十年河東,十年河西,莫欺少年窮

本篇主旨是如何實體删除有主外鍵限制的記錄!那麼,我們從主外鍵走起!

下面建立三張有主外鍵限制的表,分别為:系/學院表,專業班表,學生表,如下:

由上述SQL腳本,我們可以得到:學生表外鍵于班級表、班級表外鍵于系/學院表。也就是說:系和班級是1:N 的關系,同理班級和學生也是1:N 的關系。

上述的主外鍵很清晰!

下面我們新增記錄,如下:

C# 如何實體删除有主外鍵限制的記錄?存儲過程實作

由上圖,我們可以看出計算機系下,有計算機網絡、計算機科學與技術兩個專業班。計算機網絡、計算機科學與技術兩個班級均有兩個學生!

現在我們有如下需求:

删除計算機系~

因為有外鍵限制,是以當我們删除時,會發現删除失敗!

而這時我們要做的是:先删除學生表、再删除班級表、最後删除系/學院表。

有了以上思路,我們就可以寫存儲過程了!

存儲過程如下:

執行結果如下(輸出參數可以在程式中判斷執行是否成功~嘻嘻~):

C# 如何實體删除有主外鍵限制的記錄?存儲過程實作

從上圖看出,可以一次性删除完成!

之是以采用存儲過程是因為存儲過程的特性:要麼做,要麼不做!這樣就保證了資料的完整性!

當然,本節使用存儲過程實作的,大家也可以采用SQL的觸發器實作,使用觸發器實作是基于級聯删除!這個大家自行查詢資料!

 @陳卧龍的部落格

繼續閱讀