目的:演示mysql的外鍵的創建、刪除、外鍵的級聯操作
使用mysql創建2張表:按順序依次創建班級class表和學生表students
創建外鍵時,可以爲外鍵起個名字(constraint後面緊挨的字符串爲),該名字在刪除外鍵時會被使用。
注意:如果先創建學生表students並同時創建外鍵指向班級表class,會報錯,因爲class表不存在。
要想刪除表class裏面1班的數據,同時刪除學生表students裏面小明的數據,則要設置students表的外鍵的on delete cascade
先刪除原來的外鍵。
on update和on delete的方法類似。
注意:
- 班級表class爲主表,學生表students爲從表。
- 主從表區別,看外鍵在哪個表,外鍵在學生表,則學生表students爲從表,班級表class爲主表。
on delete、on update表示事件觸發限制,可設參數
外鍵的級聯操作的類型包括:
-
restrict(限制外表中的外鍵改動):默認值,拋異常。on delete | update restrict
代表在主表進行刪除和更新時,會查看是否存在外鍵依賴,如果有則不允許刪除 -
cascade(級聯,跟隨外鍵改動):在主表進行操作時,如果主表的記錄刪除掉,如果有外鍵依賴,那麼則刪除子表中相關聯的那條記錄
-
set null:
在主表進行操作時 如果有外鍵依賴 那麼將子表中的數據設置爲null -
no action:什麼都不做
總結:分清主從表,因爲當刪除從表時一條數據時,對主表沒有影響。當刪除主表的一條數據,如有外鍵依賴,則會連從表的相關數據一起刪除。
刪除從表測試如下:
刪除主表測試: