十九、MySQL外键删除更新行为如何实现?

1、行为约束

(1)基础概念:        

要学习外键约束,就要先了解外键约束。

        比如说,现在这里有两张表,其中一张存储着用户的信息(子表),另外一张存储着用户所属的部门(父表) ,但现在由于误操作,不小心将父表中某一条信息删除,那么就有可能导致子表中某些用户的部门信息变成无数据源,导致用户信息不完整。现在,又向子表中随意添加一组数据,改组数据可能没有对应的部门数据,这样的信息是不完整的!

        因而,这样就有必要设置外键约束。

相对于基础建立外键的语句,只需要在其后加上"on update 行为"和"on delete 行为"即可

alter table 子表名 add constraint 外键名称 foreign key (子表字段名) references 父表名(父表字段名) on update 行为 on delete 行为;

(2)约束语法说明:

当用户对父表进行修改时,设置不同的外键约束,子表会产生不同的变化。

(3)no action和restrict:

当父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有对应外键则不允许删除/更新。

当父表中删除/更新对应记录时,首先检查该记录是否有对应外键,
如果有对应外键则不允许删除/更新,
行为:no action 或 restrict

(4)cascade:

 当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有,则删除/更新外键在子表中的记录:

当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,
如果有,则删除/更新外键在子表中的记录:
行为:cascade

(5)set null: 

当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有,则设置子表中该外键值为null(注意,该处要求外键可取null)

当在父表中删除对应记录时,首先检查该记录是否有对应外键,
如果有,则设置子表中该外键值为null(注意,该处要求外键可取null)
行为:set null

(6)set default:

 父表有变更时,子表将外键设置成一个默认的值,(注意,MySQL的默认数据存储引擎Innodb不支持)

父表有变更时,子表将外键设置成一个默认的值
(注意,MySQL的默认数据存储引擎Innodb不支持)
行为:set default

2、 操作:

(1)语法:

相对于基础建立外键的语句,只需要在其后加上"on update 行为"和"on delete 行为"即可

alter table 子表名 add constraint 外键名称 foreign key (子表字段名) references 父表名(父表字段名) on update 行为 on delete 行为;

(2)初始化表格:

(3) 验证no action和restrict:

在初始化表格之后,运行如下语句:

alter table emp add constraint fk_number_emp
    foreign key (type) references number(id)
    on update no action on delete restrict ;

进入父表,对某行数据执行删除操作:会报错!

(4) 验证cascade:

alter table emp add constraint fk_number_emp
    foreign key (type) references number(id)
    on update cascade on delete cascade ;

在执行该语句之后,进入父表,删除第一行数据,再进入子表,可以看到外键在子表中的记录被删除:

(5) 验证set null:

alter table emp add constraint fk_number_emp
    foreign key (type) references number(id)
    on update set null on delete set null ;

进入父表,删除第一行数据,再进入子表,可以看到外键在子表中的记录被设置为null:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Navicat是一种流行的数据库管理工具,可以用于管理各种数据库,包括MySQL。在MySQL中,外键用于建立之间的关联关系。通过外键,可以确保数据的一致性和完整性。 在Navicat中添加外键时,可能会遇到一些问题。例如,当某个已经有记录时,添加外键可能会失败。此时,可以尝试清空两个要关联中的数据,然后重新添加外键关系。如果在添加外键时出现错误,可能是因为在引用中缺少了外键所需的索引。此时需要检查外键设置,确保外键是引用的主键。 在设置外键时,还需要注意以下几点: 1. 外键必须引用另一个的主键。 2. 外键的数据类型必须与引用的主键数据类型相匹配。 3. 外键的约束条件可以选择设置为CASCADE、SET NULL、RESTRICT或NO ACTION,用于指定在更新删除引用中的记录时的行为。 需要注意的是,在删除数据时,必须先删除外键中的记录,然后再删除主键中的记录。否则,如果删除了主键中的记录,而外键中仍然存在对该记录的引用,数据库将不允许删除。 综上所述,Navicat中的外键用于建立之间的关联关系,确保数据的一致性和完整性。在设置外键时,需要注意外键的引用关系、数据类型匹配以及约束条件的设置。在删除数据时,需要先删除外键中的记录,再删除主键中的记录。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

弦之森

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

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

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

打赏作者

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

抵扣说明:

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

余额充值