外键约束:CASCADE、NO ACTION、RESTRICT、SET NULL

外键的功能

  • 设置外键的作用很明显,就是将两个表的数据产生关联,就比如个人信息表和部门表之间,部门表的部门id就可以作为一个外键存放于个人信息表中(特性什么的就不再赘述~),除此之外设定外键在父子表中的维护关系,可以达到一个类似于级联的操作,就是当父级表(主键作为外键的表)数据变化时,子表(拿着别的表的主键作为自己的外键的表)就会有相应的数据变化;

外键的约束(外键的限制、外键对父子表数据的维护关系)

  • CASCADE、NO ACTION、RESTRICT、SET NULL这几项可以理解为是:外键对父子表之间数据关系维护(限制)级别;

      |-- 父表:被拿主键作为外键的表;
      |-- 子表:拿别的表的主键作为外键的表;
    
级别关系维护
CASCADE父表delete、update的时候,子表会delete、update掉关联记录;
NO ACTION如果子表中有匹配的记录,则不允许对父表中的那个键进行update/delete操作
RESTRICT如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许delete记录;
SET NULL在父表上update/delete记录时,将子表上匹配记录的列设为null要注意子表的外键列不能为not null
SET DEFAULT(Navicat中的空白项)父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

关于这四种维护关系的选择需要根据情况而定,比如:

  • 订单表和人员表,当用户注户后,该用户的订单信息需要被清空(至少在当前正在使用的数据库中需要被移出),那么订单表中的外键-人员id,他的维护关系就需要定为"CASCADE"级别的;

其他的情况就不一一介绍了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风暖云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值