MySQL 外來鍵關聯策略

2022-07-04 09:54:09 字數 1008 閱讀 1654

eg.乙個使用者可有擁有多個訂單,乙個訂單只能屬於乙個使用者,一對多,在tb_order中使用外來鍵user_id關聯tb_user的id。

當刪除、更新tb_user中的主鍵時,與之關聯的tb_order要受到影響,比如

#tb_user中的一條記錄

1chy abcd

#tb_order中一條記錄,10是tb_order的id,1是所屬user的id

10 ...... 1

刪除tb_user中id=1這條記錄,或者更新id欄位的值,mysql會如何處理tb_order中與之關聯的記錄?

設計外來鍵時,mysql提供了4種外來鍵關聯策略

1、restrict   限制(預設策略)

要刪除tb_user中的記錄,或者更新主鍵欄位的值,如果tb_order中有記錄與之關聯,則不能刪除、更新(執行操作時會報錯)

2、cascade   級聯

刪除tb_user中的記錄時,會自動刪除tb_order中與之關聯的記錄;

修改tb_user中id欄位的值時,會自動修改tb_order中與之關聯的記錄的外來鍵字段的值(同步變化)。

3、no action   什麼也不做

刪除tb_user中的記錄,或者修改id欄位的值,但tb_order中有記錄與之關聯,可以刪除、更新,tb_order中與之關聯的記錄不作任何處理(資料不發生變化)。

此種策略需要儲存引擎支援,如果儲存引擎不支援,會自動換為restrict。

4、set null   置為null

刪除tb_user的記錄,或更新主鍵欄位的值,會自動將tb_order中與之關聯的記錄的外來鍵字段的值置為null。

這種方式有乙個要求:設計tb_order時,外來鍵user_id不能使用not null約束。

cascade用得最多,其次是restrict,未設定外來鍵關聯策略時預設為restrict(為了資料安全)。

mysql 主外來鍵 策略 mysql外來鍵策略

1.外來鍵 建表時新增外來鍵 constraint 外鍵名 foreign key 從表字段 references 主表字段 級聯操作 create table dage create table xiaodi dage idint primary key,xiaodi id int,namecha...

mysql 中不能關聯外來鍵 mysql 外來鍵關聯

mysql 外來鍵關聯 什麼是外來鍵 外來鍵是乙個特殊的索引,用於關聯兩個表,只能是指定內容。如我將新建乙個daka的表,然後將此表的class id 與另外乙個class的表的cid欄位關聯 class表 create table class cid int 11 not null auto in...

mysql外來鍵關聯得外表得列 Mysql外來鍵得使用

一 基本概念 1 mysql中 鍵 和 索引 的定義相同,所以外來鍵和主鍵一樣也是索引的一種。不同的是mysql會自動為所有表的主鍵進行索引,但是外來鍵字段必須由使用者進行明確的索引。用於外來鍵關係的字段必須在所有的參照表中進行明確地索引,innodb不能自動地建立索引。2 外來鍵可以是一對一的,乙...