MySQL–开启删除级联约束
原文:https://www . geesforgeks . org/MySQL-on-delete-cascade-constraint/
ON DELETE CASCADE 约束用于 MySQL 中,当父表中的行被删除时,会自动删除子表中的行。例如,当一名学生在在线学习平台注册时,该学生的所有详细信息都用其唯一的号码/id 记录下来。这些在线学习平台中的所有课程都有自己的代码、标题和名称。学生可以根据自己的意愿报名参加任何课程。
没有规定所有学生必须注册所有课程,或者他们必须在同一天参加课程。学生可以注册一门或多门课程。假设您从“学生”表中删除了一行,现在您还需要删除“注册”表中引用“学生”表中该行的所有行。为此,我们需要在删除级联。以下是解释“删除级联”引用操作如何工作的步骤。
第一步:创建学生表
CREATE TABLE Student (
sno INT PRIMARY KEY,
sname VARCHAR(20),
age INT
);
第二步:将行插入*学生*表格
INSERT INTO Student(sno, sname,age)
VALUES(1,'Ankit',17),
(2,'Ramya',18),
(3,'Ram',16);
*第三步:*执行的选择查询,检查学生表中的数据。
SELECT *
FROM Student;
*输出:*
**年龄** | | 【氧化锡】 | | | --- | --- | --- |*步骤 4:* 创建课程表
CREATE TABLE Course (
cno INT PRIMARY KEY,
cname VARCHAR(20)
);
*步骤 5:* 将行插入的路线表格
INSERT INTO Course(cno, cname)
VALUES(101,'c'),
(102,'c++'),
(103,'DBMS');
*第 6 步:*执行的选择查询,查看课程表中的数据。
SELECT *
FROM Course;
*输出:*
**T15】c****T18****T21】c++****T25】103****T30T34** | cno | cname | | --- | --- | | One hundred and one | | One hundred and two | | 数据库管理系统 |*第七步:*创建报名表
CREATE TABLE Enroll (
sno INT,
cno INT,
jdate date,
PRIMARY KEY(sno,cno),
FOREIGN KEY(sno)
REFERENCES Student(sno)
ON DELETE CASCADE
FOREIGN KEY(cno)
REFERENCES Course(cno)
ON DELETE CASCADE
);
*第 8 步:*在报名表格中插入行
INSERT INTO Enroll(sno,cno,jdate)
VALUES(1, 101, '5-jun-2021'),
(1, 102, '5-jun-2021'),
(2, 103, '6-jun-2021');
*第九步:*执行的选择查询,查看报名表中的数据。
SELECT *
FROM Enroll;
*输出:*
| 【氧化锡】 | 【cno】 | 【jdate】 | | --- | --- | --- | | |*第 10 步*:这里的父表是学生和课程,子表是报名。如果学生退出课程或课程从课程列表中删除,它也必然会影响子表。
DELETE FROM Student
WHERE sname="Ramya";
*第 11 步:*执行的选择查询查看数据。
Select * from Student;
*输出:*
| 【氧化锡】 | 名字 | age | | --- | --- | --- | | 1】 |*输出:*
| 【氧化锡】 | 【cno】 | 【jdate】 | | --- | --- | --- | | |当您删除父表中 sno=2 的内容时,它也会自动从子表中删除 sno=2 的详细信息。同样,如果从“课程”表中删除一门课程,它会自动删除子表“注册”中该课程的行。这是因为指定了 DELETE CASCADE 上的外键约束。
版权属于:月萌API www.moonapi.com,转载请注明出处