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...