Mysql外键级联动作(删除和更新)

在实际开发中,我们创建表和表之间关联的时候很少用到外键,但是有时候需要用到外键,准确地说是用到外键的级联动作,例如你有一张用户表,存了一些用户的基本信息user表,如果这张表中的属性过多,我们可能需要另一张表也用来存储用户的信息,比如存一些登录信息,就叫login_user表,很明显这时候在login_user中设置一个外键去关联user表更合适,虽然不用外键也可以达到效果(使用触发器当然也行),为什么要设置外键呢?是因为我想在user表中删除一条记录的时候同时把user_login相应的记录也删除掉。好了于是我们在login_user表中添加了一个外键列user_id关联user表中的id,这时user表就叫父表,我们现在研究的是父表的删除和更新操作对子表的影响

这种影响有四个分类:cascade、set null 、restrict、no action。

1、cascade,如果你设置外键的更新或删除时设置为cascade,那么你对父表的删除或更新操作同时会删除或更新到子表,就以上面的两张表为例,你如果在user表中删除了一条id=1,001的记录,那么user_login中外键列user_id=1001 的记录都会被删除掉(如果没有的话当然不会删喽)。如果你把user表中的id=1002的记录改为id=100002那么在user_login表中外键列user_id=1002的记录也会全部改为100002,如果你不修改user表中的对照列id,去修改别的属性,那当然不会影响子表什么。这就是cascade。

2、no action 和 restrict 相同,

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值