首页 > 数据库 >mysql的ON DELETE CASCADE 和ON DELETE RESTRICT区别

mysql的ON DELETE CASCADE 和ON DELETE RESTRICT区别

时间:2023-12-12 21:32:10浏览次数:30  
标签:删除 记录 INT RESTRICT CASCADE 子表 id DELETE

mysql的ON DELETE CASCADE  和ON DELETE RESTRICT区别_删除操作

ON DELETE CASCADEON 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 将拒绝执行删除操作。你需要先处理好员工记录才能成功删除公司记录。

标签:删除,记录,INT,RESTRICT,CASCADE,子表,id,DELETE
From: https://blog.51cto.com/BeginMind/8791300

相关文章

  • OpenCASCADE Poly HLR Edge
    Abstract. HLRBRep_PolyAlgoisbasedontheprincipleofcomparingeachedgeoftheshapetobevisualizedwitheachofthetrianglesoftheshape,andcaculatingthevisibleandthehiddenpartsofeachedge.Foragivenprojection,HLRBRep_PolyAlgocalcu......
  • Delete和Truncate详解
    --delete命令--语法:deletefrom表名[where条件]--删除数据(避免这样写,会全部删除)DELETEFROM`student2`--删除指定数据DELETEFROM`student2`WHEREid=1;--truncate命令--作用:完全清空一个数据库表,表的结构和索引,约束不会变TRUNCATE`student2`/*delete与truncate的区别相......
  • "firmwarepasswd": MacOS Firmware Password Management: CHECK and DELETE Macbook P
    Abaels-MacBook-Pro:~abaelhe$suPassword:bash-3.2#firmwarepasswd-checkPasswordEnabled:Yesbash-3.2#firmwarepasswd-deleteDeleteFirmwarePasswordEnterpassword:PasswordremovedNOTE:MustrestartbeforechangeswilltakeeffectUsage:firmw......
  • Vue使用el-cascader实现地区选择器组件
    1.使用组件-效果展示(推荐)1.2安装组件依赖(默认是V6版本,旧版本V5.02)官方文档地址(二级联动,三级联动包含教程):https://www.npmjs.com/package/element-china-area-datanpminstallelement-china-area-data-Snpminstallelement-china-area-data@5.0.2-S1.3V6版本使用注......
  • perl:mysql binlog iud (insert、update、delete)分析 小脚本:实用程序
    1#!/usr/bin/perl2#utf-834usestrict;5usePOSIX;6useTime::HiResqw/sleeptime/;78$|=1;910my$line='#-----------------------------------------------------------------------';11my$debug=0;1213##------------......
  • 删除300w数据,delete语句要执行多久
    执行DELETE语句删除300万条数据的时间会受到多种因素的影响,包括数据库性能、服务器硬件配置、表结构等。无法准确预测删除操作所需的准确时间,因为它取决于具体情况。以下是一些可能影响DELETE语句执行时间的因素:数据库性能:数据库管理系统的性能和优化策略将直接影响删除操作的速度......
  • OpenCASCADE HLR 轮廓线
    OpenCASCADEHLRQuadricSurfaceOutlineEdgeKeyWords:HLR,OutlineEdge,SihouetteEdge1IntroductionOpenCASCADE中关于隐藏线消除HLR算法的描述就是一句话:Thesealgorithmsarebasedontheprincipleofcomparingeachedgeoftheshapetobevisualizedwithea......
  • OpenCASCADE-HLR Edge
    OpenCASCADE-HLREdge1Introduction用计算机生成三维物体的真实图形,是计算机图形学研究的重要内容。真实图形在仿真模拟、几何造型、广告影视和科学计算可视化等许多领域都有着广泛应用。在用显示设备描述物体的图形时,必须把三维信息经过某种投影变换在二维的显示平面上绘制出......
  • OpenCASCADE曲线上点的反求
    本文主要结合代码介绍OpenCASCADE曲线上点的反求实现原理及使用过程中的一些注意事项。OpenCASCADE曲线上点的反求1Introduction曲线可以用代数方程表示,如圆可以用X^2+Y^2=R^2表示,也可以用参数方程X(u)=RCos(u),Y(u)=RSin(u)表示。要判断点是不是在线上,用......
  • OpenCASCADE 曲线求交
    对于拓朴边提供了求交算法IntTools_EdgeEdge,这个类是使用类似于曲面求交的离散网格法,使用了离散包围盒法。OpenCASCADE曲线求交1IntroductionOpenCASCADE中提供了二维几何曲线的求交类Geom2dAPI_InterCurveCurve,对应到三维几何只提供了GeomAPI_IntCS,GeomAPI_IntS......