MySQL——多表操作(一)外键(3)添加外键约束的参数说明

我们知道建立外键是为了保证数据的完整和统一性,但如果主表中的数据被删除或修改,从表中对应的数据该怎么办?很明显,从表中对应的数据也应该被删除,否则数据库中会存在很多无意义的垃圾数据。MySQL 可以在建立外键时添加 ON DELETE 或 ON UPDATE子句来告诉数据库,怎样避免垃圾数据的产生。具体语法格式如下:

sql 复制代码
alter table 表名 add constraint FK_ID foreign key(外键字段名) REFERENCES 主表表名(主键宇段名);
[ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]

语句中各参数的具体说明如下表所示:

|-----------|-----------------------------------------------------------------|
| 参数名称 | 功能描述 |
| CASCADE | 删除包含与已删除键值有参照关系的所有记录 |
| SET NULL | 修改包含与已删除键值有参照关系的所有记录,使用 NULL 值替换(不能用于已标记为 NOT NULL 的字段) |
| NO ACTION | 不进行任何操作 |
| RESTRICT | 拒绝主表删除或修改外键关联列。(在不定义 ON DELETE 和 ON UPDATE 子句时,这是默认设置,也是最安全的设置) |

相关推荐
m0_748229993 分钟前
ThinkPHP快速入门:从零到实战
c语言·开发语言·数据库·学习
阿蒙Amon13 分钟前
C#每日面试题-Thread.Sleep和Task.Delay的区别
java·数据库·c#
沉舟侧畔千帆过_30 分钟前
一个DBA的真心话:搞定Oracle+PG双库,我就靠这招
数据库·oracle·dba
醉风塘31 分钟前
【终极解决方案】Oracle ORA-01795错误:IN列表1000条限制的全面突破指南
数据库·oracle
信创天地32 分钟前
从 Oracle 到国产数据库:迁移后成本直降 60%、性能反超 30% 的实战秘籍
数据库·oracle
Mikhail_G33 分钟前
Mysql数据库操作指南——排序(零基础篇十)
大数据·数据库·sql·mysql·数据分析
沉舟侧畔千帆过_33 分钟前
能源核心系统国产化攻坚:智能电网调度系统从 Oracle 到金仓 KES 迁移实录
数据库·oracle·能源·kingbase·金仓数据库
chengrise34 分钟前
Oracle EBS 成本异常排查全指南:差异分摊、成本回滚场景与解决方案
运维·数据库·oracle·erp·ebs
wxc09035 分钟前
Oracle 性能分析系列:tkprof 工具详解 —— 解码 10046 Trace 的利器
数据库·oracle
洁辉36 分钟前
Oracle 数据库中将某个字段的值根据逗号(,)分隔符拆分成多行显示
数据库·oracle