mysql - 困境: Cascade delete or Join delete

标签 mysql sql rdbms data-integrity

这不是一个具体的问题,更像是一个普遍的疑惑。

当您必须对 1:M 关系中的多个表进行删除时,使用级联删除进行 FK 约束还是在删除语句中连接表更好。

我有一个旧项目,对相关表有单独的删除语句,有几次有些语句没有执行,数据完整性受到损害。我必须在两者之间做出决定,所以我在考虑什么是更好的解决方案。

还有一个选项可以创建存储过程或事务。

所以我正在寻求意见或建议...?

最佳答案

我会说使用级联删除更安全。如果您决定使用联接,则必须记住每次从父表中删除任何内容时都使用它们;即使你有足够的纪律来做到这一点,你也无法确定你的同事或将来会支持你的软件的人。此外,不止一次对有关表关系的知识进行编码违反了 DRY 原则。

如果您使用级联删除,则没有人需要记住任何内容,子行将始终根据需要删除。

关于mysql - 困境: Cascade delete or Join delete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7821440/

相关文章:

php - Magento 产品 : remove SKU from product name

php - 将 opencart 从 1.5.6.4 升级到 2.x.x。给出 JSON 错误

php - 如何将动态值插入mysql数据库

postgresql - 内联或 "background table"中的 postgres 文本存储?

mysql - mysql。在单列中查找倍数

mysql - 设置了只读的从属服务器上存储过程中的临时表

objective-c - 是否可以存储和检索使用 Objective-C 创建的对象? (在数据库中,用于 iOS 应用程序)

mysql - 使用 drill 修改 RDBMS 时的 UPDATE/INSERT

php - 在 PHP 和 MySQL 方面需要帮助

c# - 使用逗号分隔的类似数组的字符串执行存储过程