mysql 所有外來鍵 mysql中的外來鍵

2021-10-25 14:41:17 字數 1161 閱讀 8249

mysql中的外來鍵

1.預設的外來鍵存在之後,會對資料進行約束。

1)約束1:如果子表中新增的資料,外來鍵字段對應的資料如果在父表中不存在,那麼新增失敗。

有資料之後:

2)約束2:父表不能刪除(或者修改)乙個被子表引用的資料記錄

3.外來鍵約束

預設的使用者所能看到的約束都是外來鍵的一種約束:嚴格模式

外來鍵約束其實有三種模式:都是在約束父表

嚴格模式:restrict(預設的),父表不能刪除也不能更新(如果被子表引用)

置空模式:set null,如果父表刪除,那麼子表中對應的關聯的外來鍵就會被置空(set null)

級聯模式:cascade,如果父表更新,那麼子表對應的全部變成最新的;如果父表刪除,那麼子表跟著被刪除。(父變子變,父刪子刪)

動作約束:刪除約束(on delete)和更新約束(on update)

常用的約束:on delete set null on update cascade(刪除父表記錄,子表置空;更新父表記錄,子表級聯更新)

更新父表的主鍵

刪除父表記錄

4.外來鍵條件

要使用外來鍵,表儲存引擎必須是innodb

外來鍵若要使用置空模式,前提是子表的外來鍵字段允許為空

外來鍵字段的資料型別必須嚴格的與父表主鍵的資料型別一致

mysql查詢所有外來鍵 查詢mysql所有外來鍵約束

select c.table schema 擁有者,c.referenced table name 父表名稱 c.referenced column name 父表字段 c.table name 子表名稱,c.column name 子表字段,c.constraint name 約束名,t.tabl...

Mysql刪除所有外來鍵約束

由於外來鍵約束的存在,使得後期的分庫分表非常麻煩,對於沒有用到外來鍵約束限制操作,並且有外來鍵結構的資料庫,刪除所有外來鍵約束很有必要,使資料庫可移植性強,可拆解性強 執行查詢所有外來鍵命令,並且拼接刪除外來鍵的sql 複製所有sql,並執行 select concat alter table ta...

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

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