十年河東,十年河西,莫欺少年窮
本篇主旨是如何實體删除有主外鍵限制的記錄!那麼,我們從主外鍵走起!
下面建立三張有主外鍵限制的表,分别為:系/學院表,專業班表,學生表,如下:
由上述SQL腳本,我們可以得到:學生表外鍵于班級表、班級表外鍵于系/學院表。也就是說:系和班級是1:N 的關系,同理班級和學生也是1:N 的關系。
上述的主外鍵很清晰!
下面我們新增記錄,如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEmYyYWYiF2M5gTY1M2NxAzM5cDZzMzN5I2M4QTN3IDNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
由上圖,我們可以看出計算機系下,有計算機網絡、計算機科學與技術兩個專業班。計算機網絡、計算機科學與技術兩個班級均有兩個學生!
現在我們有如下需求:
删除計算機系~
因為有外鍵限制,是以當我們删除時,會發現删除失敗!
而這時我們要做的是:先删除學生表、再删除班級表、最後删除系/學院表。
有了以上思路,我們就可以寫存儲過程了!
存儲過程如下:
執行結果如下(輸出參數可以在程式中判斷執行是否成功~嘻嘻~):
從上圖看出,可以一次性删除完成!
之是以采用存儲過程是因為存儲過程的特性:要麼做,要麼不做!這樣就保證了資料的完整性!
當然,本節使用存儲過程實作的,大家也可以采用SQL的觸發器實作,使用觸發器實作是基于級聯删除!這個大家自行查詢資料!
@陳卧龍的部落格