MySQL – Restricción ON DELETE CASCADE

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.

Publicación traducida automáticamente

Artículo escrito por mrsundari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *