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 子句时,这是默认设置,也是最安全的设置) |

相关推荐
是程序喵呀22 分钟前
MySQL备份
android·mysql·adb
指尖上跳动的旋律29 分钟前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶40 分钟前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
m0_748244831 小时前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝2 小时前
Redis 介绍和安装
数据库·redis·缓存
wmd131643067122 小时前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!2 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱2 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ClouGence2 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存
m0_748236582 小时前
《Web 应用项目开发:从构思到上线的全过程》
服务器·前端·数据库