迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

MySQL 级联删除

作者:迹忆客 最近更新:2024/03/25 浏览次数:

在 MySQL 语言中,约束是指在表上强制执行以避免某些异常的一组规则。

这些异常会导致表中出现错误记录。基于故障的行为,约束可以是各种类型。

它们是参照完整性、实体约束和语义约束。这些具有基于故障类型以及如何避免不一致行为的含义和用法。

让我们简要了解存在的约束类型。

  1. 参照完整性是应用于其他表以对数据实施限制的约束。最常用的约束是外键约束。

    如果父表有修改,子表应与父表保持一致。如果是删除记录的情况,则子记录中的引用不应保持悬空,并且是引用完整性约束。

    例子:

    create table report_card (stu_roll_number int, stu_marks int, stu_course varchar2(30) references student);
    

    在上面的示例中,成绩单显示了父表 student 中学生的部门或课程。如果引用完整性约束被应用,那么一个表中的操作将影响子表中的工作。

在参照完整性约束下,on delete cascade 是参照完整性约束,如果父记录被删除,它会自动删除子记录。它是对从外键采取的引用动作的响应。

例子:

CREATE TABLE Student (stu_id int(10) NOT NULL, name varchar(10) NOT NULL, birthdate date NOT NULL, PRIMARY KEY (stu_id));

上面的查询创建了一个表 student,其属性或列作为学生 ID,int 类型和主键作为列的实体约束。其他值属性包括名称和生日,其数据类型为 varchardate

CREATE TABLE Department (dept_id int(20) PRIMARY KEY NOT NULL,stu_id int(10) NOT NULL, dept_name varchar(20) NOT NULL, FOREIGN KEY (stu_id) REFERENCES Student (stu_id) ON DELETE CASCADE);

在上面的查询中,形成了一个部门表,其属性为 id、部门名称和学生 id。此外,学生 ID 将充当父表中的引用或外键。

这里的 on delete cascade 约束说,当学生 id 发生任何删除时,它从部门表中的条目也将被删除。因此,删除后不会有与该系学生对应的条目。

让我们在表中插入记录,看看这里的操作是如何工作的。

首先,在表 Student 中插入记录。

INSERT INTO Student (stu_id, name, birthdate) VALUES  
(101, 'John', '1995-11-12'),  
(102, 'Jian', '1983-07-19'),  
(103, 'Jackey', '1965-10-23');

上面的查询将在表 Student 中插入三条记录。

在表部门中插入记录。

INSERT INTO Department (dept_id, stu_id, dept_name) VALUES   
(301, 101, 'Physics'),  
(302, 101, 'Science'),  
(303, 102,  'Maths');

上面的查询将为表部门中的各个学生 ID 插入三个部门。

现在让我们删除父表中的一条记录。

DELETE FROM Student WHERE stu_id = 102; 

最终结果将删除表部门的第三条记录,因为其父表的引用被删除,使第三条记录悬空。

因此,它使用 on delete cascade 属性折叠第三条记录。该属性是参照完整性约束属性,当父表受到影响时,它会删除子表中的记录。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

MySQL 中的 rank 函数

发布时间:2024/03/25 浏览次数:156 分类:MySQL

本教程演示了在 MySQL 数据库中使用 rank 函数。

MySQL 函数

发布时间:2024/03/25 浏览次数:74 分类:MySQL

本文介绍如何在 MySQL 中使用和创建一个简单的函数。

MySQL with 子句

发布时间:2024/03/25 浏览次数:79 分类:MySQL

本教程教你 MySQL with 子句。它还指导你在何处以及如何使用 MySQL With 子句

MySQL Tinytext

发布时间:2024/03/25 浏览次数:109 分类:MySQL

本文介绍了如何在 MySQL 中使用不同的数据类型。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便