8.2.太極平臺:使用MySQL數據庫外鍵字段,自動刪除聯動數據

1、業務需求

關係型數據庫中,表與表之間存在關聯,是很常見的,因此也得名關係型數據庫。其中,外鍵是一個重要特性。主從之間存在一對多、多對多的關係。

經常遇到這樣的業務需求。刪除一條訂單時,要刪除該條訂單相關聯的所有支出記錄、付款記錄、評論記錄、商品記錄;在刪除一個商品分類時,則不能刪除該分類下的所有商品,而是要將商品的分類清空。一般情況下,我們通過編碼,在數據層採用事務的方式去實現。

採用太極平臺框架後,我們要儘量減少編碼,甚至不編碼。所以將採用數據庫的外鍵特性,自動去實現功能需求。

借用訂單表、訂單支出表、訂單收款表,建立外鍵關係如下。刪除訂單時,同步刪除該條記錄相關的支出記錄、付款記錄。

2、建立外鍵解決

在訂單支出表qd_order_cost中,將字段OrderId設置爲外鍵,與訂單表qd_order的主鍵Id字段進行關聯。這裏的重點,是設置刪除時的屬性。

  • 設置爲CASCADE,則會級聯刪除。即刪除了主表記錄,從表記錄就相應刪除;下面還有從表外鍵,也會繼續刪除。
  • 設置爲SET NULL,則會清空從表的字段值,設置爲null。此時從表的OrderId字段,要設置爲允許null。
  • 設置爲RESTRICT,則會嚴格校驗,如果從表有數據,則不允許刪除。刪除時會報異常。太極平臺能獨立識別此異常,並返回友好的提示給用戶“刪除失敗,子表下有外鍵數據”。所以想要實現此效果,也不需要編碼進行判斷。在數據庫層面進行限制即可。
  • 設置NO ACTION,則不進行任何處理。

所以根據需求,刪除訂單時,想同步刪除訂單下的所有從表數據,則從表的外鍵刪除選項,設置爲CASCADE;不需要刪除,則可以設置SET NULL或者NO ACTION;限制不能刪除,則可以設置爲RESTRICT。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章