mysql 所有外键_mysql中的外键

mysql中的外键

1.默认的外键存在之后,会对数据进行约束。

1)约束1:如果子表中添加的数据,外键字段对应的数据如果在父表中不存在,那么添加失败。

b006ac7db3765e34b04be520f73cf653.png

有数据之后:

a0faa2c790e5a44b728f1c0560b25b0b.png

修改:可以修改跟外键不相关的任何字段,但是外键字段不能修改(不能修改成一个主表中不存在的值)

89a5ae5e391d6dbe546248dd06ecb8a9.png

2)约束2:父表不能删除(或者修改)一个被子表引用的数据记录

6488141bdd5a414e9519b9f2d35d39bc.png

3.外键约束

默认的用户所能看到的约束都是外键的一种约束:严格模式

外键约束其实有三种模式:都是在约束父表

严格模式:restrict(默认的),父表不能删除也不能更新(如果被子表引用)

置空模式:set null,如果父表删除,那么子表中对应的关联的外键就会被置空(set null)

级联模式:cascade,如果父表更新,那么子表对应的全部变成最新的;如果父表删除,那么子表跟着被删除。(父变子变,父删子删)

动作约束:删除约束(on delete)和更新约束(on update)

常用的约束:on delete set null on update cascade(删除父表记录,子表置空;更新父表记录,子表级联更新)

9b6e68068c8c5c0a2608c74232a77fc5.png

更新父表的主键

dc57e9742dd11112242c76f8887cefbe.png

删除父表记录

67869774a90fbf736f5662960aa39017.png

4.外键条件

要使用外键,表存储引擎必须是innodb

外键若要使用置空模式,前提是子表的外键字段允许为空

外键字段的数据类型必须严格的与父表主键的数据类型一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值