这不是一个具体的问题,更像是一个普遍的疑惑。
当您必须对 1:M 关系中的多个表进行删除时,使用级联删除进行 FK 约束还是在删除语句中连接表更好。
我有一个旧项目,对相关表有单独的删除语句,有几次有些语句没有执行,数据完整性受到损害。我必须在两者之间做出决定,所以我在考虑什么是更好的解决方案。
还有一个选项可以创建存储过程或事务。
所以我正在寻求意见或建议...?
最佳答案
我会说使用级联删除更安全。如果您决定使用联接,则必须记住每次从父表中删除任何内容时都使用它们;即使你有足够的纪律来做到这一点,你也无法确定你的同事或将来会支持你的软件的人。此外,不止一次对有关表关系的知识进行编码违反了 DRY 原则。
如果您使用级联删除,则没有人需要记住任何内容,子行将始终根据需要删除。
关于mysql - 困境: Cascade delete or Join delete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7821440/