1. 程式人生 > >MySQL--外來鍵及資料完整性

MySQL--外來鍵及資料完整性

外來鍵概述

MySQL中的InnoDB儲存引擎是支援外來鍵的,傳統引擎的不支援。外來鍵是把一個表中的索引列與另一個表中的索引列關聯起來,以實現同步操作的目的,也是保證了資料的完整性

一般實現外來鍵需要兩張或以上的表:主表和從表,比如主表為班級表,從表為學生表,每個學生都在指定的班級裡,那麼主表的ID和從表的class_id就形成了關聯,而class_id就是我們所說的外來鍵。

外來鍵模式

外來鍵有兩種主要操作模式:刪除時(ON DELETE)和更新時(ON UPDATE)。在刪除或更新狀態下,有四種情況:
1、RESTRICT,預設設定,當主表id關聯著從表資料(class_id)時,無法刪除和修改的;
2、SET NULL,當主表記錄被刪除或修改時,從表的class_id被設定成為NULL(注意:這個欄位要允許NULL才行);
3、CASADE,當主表記錄被刪除或修改時,從表關聯資料也會被刪除或class_id相應修改;
4、NO ACTION,當主表記錄被刪除或修改時,如果關聯著字表,則產生一個錯誤並回滾之前的操作。

使用範圍

一般來說,外來鍵有較強的資料約束性,保證了資料的安全和完整,特別適合於資料庫專案使用。而對於我們的Web專案,基於支援度、效能、方便、以及程式程式碼的可讀性考慮,可能使用外來鍵的較少。