La restricción ON DELETE CASCADE se usa en MySQL para eliminar las filas de la tabla secundaria automáticamente, cuando se eliminan las filas de la tabla principal. Por ejemplo, cuando un estudiante se registra en una plataforma de aprendizaje en línea, todos los detalles del estudiante se registran con su número/identificación único. Todos los cursos en estas plataformas de aprendizaje en línea tenían su propio código, título y nombre. Los estudiantes pueden inscribirse en cualquier curso de acuerdo a sus deseos.
No existe una regla que indique que todos los estudiantes deben inscribirse en todos los cursos, o deben unirse al curso en la misma fecha. Un estudiante puede inscribirse en uno o más cursos. Suponga que elimina una fila de la tabla «Estudiante», ahora también querrá eliminar todas las filas en la tabla «Inscripción» que hace referencia a la fila en la tabla «Estudiante». Para eso, necesitamos ON DELETE CASCADE. A continuación se muestran los pasos que explican cómo funciona la acción referencial ON DELETE CASCADE.
Paso 1: crear la tabla de estudiantes
CREATE TABLE Student ( sno INT PRIMARY KEY, sname VARCHAR(20), age INT );
Paso 2: Insertar filas en la tabla de Estudiantes
INSERT INTO Student(sno, sname,age) VALUES(1,'Ankit',17), (2,'Ramya',18), (3,'Ram',16);
Paso 3: Ejecute la consulta SELECT para verificar los datos en la tabla ESTUDIANTE .
SELECT * FROM Student;
Producción:
mocoso | nombre de | años |
---|---|---|
1 | Ankit | 17 |
2 | Ramia | 18 |
3 | RAM | dieciséis |
Paso 4: crear la tabla del curso
CREATE TABLE Course ( cno INT PRIMARY KEY, cname VARCHAR(20) );
Paso 5: inserte filas en la tabla del curso
INSERT INTO Course(cno, cname) VALUES(101,'c'), (102,'c++'), (103,'DBMS');
Paso 6: Ejecute la consulta SELECT para verificar los datos en la tabla del Curso .
SELECT * FROM Course;
Producción:
cno | cnombre |
---|---|
101 | C |
102 | c++ |
103 | SGBD |
Paso 7: crear la tabla de inscripción
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 );
Paso 8: inserte filas en la tabla de inscripción
INSERT INTO Enroll(sno,cno,jdate) VALUES(1, 101, '5-jun-2021'), (1, 102, '5-jun-2021'), (2, 103, '6-jun-2021');
Paso 9: Ejecute la consulta SELECT para verificar los datos en la tabla de Inscripción .
SELECT * FROM Enroll;
Producción:
mocoso | cno | jdate |
---|---|---|
1 | 101 | 5-jun-2021 |
1 | 102 | 5-jun-2021 |
2 | 103 | 6-jun-2021 |
Paso 10 : Aquí las tablas principales son Estudiante y Curso, mientras que la tabla secundaria es Inscripción . Si un estudiante abandona el curso o se elimina un curso de la lista de ofertas, también debe afectar la tabla secundaria.
DELETE FROM Student WHERE sname="Ramya";
Paso 11: Ejecute la consulta SELECT para verificar los datos.
Select * from Student;
Producción:
mocoso | nombre de | años |
---|---|---|
1 | Ankit | 17 |
3 | RAM | dieciséis |
Select * from Enroll;
Producción:
mocoso | cno | jdate |
---|---|---|
1 | 101 | 5-jun-2021 |
1 | 102 | 5-jun-2021 |
A medida que elimina el contenido de sno=2 en la tabla principal, también elimina automáticamente los detalles de sno=2 de la tabla secundaria. De la misma manera, si elimina un curso de la tabla de cursos, automáticamente elimina las filas de ese curso en la tabla secundaria Inscripción. Esto funciona porque se especifica la restricción de clave externa ON DELETE CASCADE.