当前位置: 首页 > news >正文

mysql的ON DELETE CASCADE 和ON DELETE RESTRICT区别

​ON DELETE CASCADE​​​ 和 ​​ON DELETE RESTRICT​​ 是 MySQL 中两种不同的外键约束级联操作。它们之间的主要区别在于当主表中的记录被删除时,子表中相关记录的处理方式。

  1. ON DELETE CASCADE:
  • 当在主表中删除一条记录时,所有与之相关的子表中的匹配记录也会被自动删除。
  • 这通常用于强耦合的关系,其中父表和子表的数据紧密相连,删除父表的记录时通常也期望删除子表的相关记录。
  1. ON DELETE RESTRICT:
  • 当试图从主表中删除一条记录时,如果存在相关的子表记录,MySQL 将阻止删除操作。
  • 这是一种数据完整性保护措施,确保不会因为删除主表的记录而留下孤立的子表记录。
  • 如果需要删除主表记录,必须先手动删除或更新子表的相关记录。

举例说明:

假设有一个公司(​​companies​​)表和一个员工(​​employees​​)表,员工表通过外键关联到公司表。

  • 使用 ON DELETE CASCADE
CREATE TABLE companies (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255) NOT NULL
);CREATE TABLE employees (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255) NOT NULL,company_id INT,FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE CASCADE
);

在这种情况下,当你删除一家公司时,与其相关的所有员工记录也会被自动删除。

  • 使用 ON DELETE RESTRICT
CREATE TABLE companies (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255) NOT NULL
);CREATE TABLE employees (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255) NOT NULL,company_id INT,FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE RESTRICT
);

在这种情况下,如果你试图删除一家公司,但这家公司仍有员工记录存在,MySQL 将拒绝执行删除操作。你需要先处理好员工记录才能成功删除公司记录。

http://www.lryc.cn/news/258612.html

相关文章:

  • 如何快速将图片转为excel?
  • 元编程(Metaprogramming)
  • IEEE Transactions on Industrial Electronics工业电子TIE论文投稿须知
  • Linux--操作系统
  • HarmonyOS—实现UserDataAbility
  • Java实现插入排序及其动图演示
  • 设计模式——原型模式(创建型)
  • 深眸科技以机器视觉高性能优势,为消费电子行业提供优质解决方案
  • React setState()的两种书写方法对比
  • orb-slam2学习总结
  • 通过wireshark判断web漏洞的流量特征
  • Command ‘npm‘ not found, but can be installed with:sudo apt install npm 解决方案
  • 【Hadoop_04】HDFS的API操作与读写流程
  • go-zero开发入门之网关往rpc服务传递数据
  • Word插件-好用的插件-批量插入图片-大珩助手
  • 小程序域名SSL证书能用免费的吗?
  • selenium自动化(中)
  • uniapp app将base64保存到相册,uniapp app将文件流保存到相册
  • Navicat 技术指引 | 适用于 GaussDB 分布式的服务器对象的创建/设计
  • 五、HotSpot细节实现
  • DRBD分布式存储实验
  • go的结构体作为返回值
  • uniapp的subnvue苹果适配(ios)谷歌地图问题
  • 项目实战之RabbitMQ重试机制进行消息补偿通知
  • MySQL之数据库的创建指令
  • [网络安全]批处理(脚本)编写
  • 事件驱动架构 vs. RESTful架构:通信模式对比与选择
  • 代码随想录算法训练营第五十二天| 300 最长递增子序列 674 最长连续递增子序列 718 最长重复子数组
  • leetcode 101.对称二叉树
  • 【本人新书】《OpenCV应用开发:入门、进阶与工程化实践》