Si tengo dos relaciones en una base de datos, así:
CREATE TABLE Courses (
CourseID int NOT NULL PRIMARY KEY,
Course VARCHAR(63) NOT NULL UNIQUE,
Code CHAR(4) NOT NULL UNIQUE
);
CREATE TABLE BookCourses (
EntryID int NOT NULL PRIMARY KEY,
BookID int NOT NULL,
Course CHAR(4) NOT NULL,
CourseNum CHAR(3) NOT NULL,
CourseSec CHAR(1) NOT NULL
);
y establezco una relación de clave externa entre los dos, así:
ALTER TABLE BookCourses
ADD FOREIGN KEY (Course)
REFERENCES Courses(Code)
ON DELETE CASCADE;
Entonces puede ver que el Courseatributo en la BookCoursesrelación hace referencia al Codeatributo en la Coursesrelación.
Mi pregunta es cuando se produce una eliminación en cualquiera de las dos relaciones, ¿de qué manera la eliminación en cascada? Si elimino una tupla en la Coursesrelación, ¿eliminará todas las tuplas de referencia en la BookCoursesrelación, o es al revés?

Categoriestabla tiene unaCourseIDclave primaria mientras que laCoursestabla tiene la claveEntryID. Realmente necesita repensar sus opciones de nombres.Respuestas:
Cascade funcionará cuando elimine algo de la tabla
Courses. Cualquier registro en la tablaBookCoursesque tenga referencia a la tablaCoursesse eliminará automáticamente.Pero cuando intenta eliminar en la tabla,
BookCoursessolo la tabla en sí se ve afectada y no en elCoursespregunta de seguimiento: ¿por qué tienes
CourseIDen la categoría de mesa?Tal vez deberías reestructurar tu esquema en esto,
fuente
Aquí hay un ejemplo simple para otros que visitan esta publicación anterior, pero el ejemplo en la pregunta lo confunde:
Entrega -> Paquete (Uno -> Muchos)
La entrada con la clave foránea Delivery_Id (Paquete) se elimina con la entidad referenciada en la relación FK (Entrega).
Por lo tanto, cuando se elimina una entrega, los paquetes que hacen referencia también se eliminarán. Si se elimina un Paquete, no pasa nada en ninguna entrega.
fuente