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

相关推荐
YMatrix 官方技术社区1 小时前
CittaBase vs. Neo4j :原生图性能实测与混合检索实践
数据库·功能测试·ymatrix
闲猫2 小时前
LangChain / Integrations / Integrations by component / Tool
java·数据库·langchain
xqqxqxxq2 小时前
SQL 连接查询技术笔记
数据库·笔记·sql
Databend3 小时前
从万亿级大模型到全线应用:Databend Cloud 助力头部 AI 企业构建全链路 Trace 数据管道
大数据·数据库·sql
MC皮蛋侠客3 小时前
SQLAlchemy 系列(十一):从 1.x 到 2.x——渐进迁移与数据访问层治理
数据库·python
1001101_QIA3 小时前
工控机网络配置
开发语言·数据库·php
ClouGence3 小时前
加一张临时表,OceanBase Oracle 写入居然快了 30 倍!
数据库·sql·oracle
tju23334 小时前
信创产业二十年:国产基础软件走到哪一步了?
数据库·gitee
自律最差的编程狗4 小时前
从零搭建:VMware + Ubuntu + Docker + MySQL 完整指南
mysql·ubuntu·docker