mysql - 何时使用 ON DELETE CASCADE

标签 mysql sql

我想知道在下面的示例中使用 ON DELETE CASCADE 是否是个好主意。这就是我对何时使用 ON DELETE CASCADE 删除行有一个大概的了解。

模块表:

ModuleId (PK) ModuleNo  ModuleName
11            CHI2333    ICT

Course_Module 表:

CourseId  ModuleId (FK)
3          11

session 表(考试):

SessionId  SessionName  ModuleId (FK)
5           ASDEE        11

在上面的示例中,如果我从 Module 表中删除一行,那么它将删除其他 2 个包含相同 ModuleId 的表中的行。在 Course_Module 表中,它确定哪个类(class)包含哪些模块,在包含考试详细信息的 Session 表中,它将删除包含已删除 ModuleId 的所有行(考试)。

对于上面的例子这样做是否可以,我的一般问题是,当父表中的行被删除或删除时,使用 ON DELETE CASCADE 删除外键行是否明智且正常?

最佳答案

我个人认为最好在代码中包含该逻辑,而不是依赖数据库为您完成工作。这就是我为所有应用编写代码的方式。

只是我的 2 美分。

关于mysql - 何时使用 ON DELETE CASCADE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384919/

相关文章:

php - 使用数据库计算和显示条目

mysql - 在具有逗号分隔值的 mysql 字段中搜索关键字

sql - Postgresql 根据条件计数

c# - 如何在不访问表的情况下查询数据库,更正数据库而不是表

mysql - 正确构建有关电话的 sql 表

php - 跨表查询,用于显示评论和线程名称,而这两个值位于不同的表中

php - 如何添加 1 个表中多行中的多列以及另一个表中的 1 行?

SQLite 从基于其他表的表中选择

带下划线的 MySQL LIKE 查询

java - 在Java sql中添加多个Prepared Statement