切勿使用级联删除,因为我们希望将所有逻辑保留在应用程序代码中



我正在处理一个项目,它的SQL Server数据库总是使用ON DELETE NO ACTION,即使是Order-OrderItem场景。

我记得学校教授总是要求我们设置级联删除。

资深开发人员说,这是因为我们希望将所有逻辑保留在应用程序代码中,这意味着如果我们想删除Order,我们的代码必须先删除OrderItem

这是一个有效的论点吗?什么时候应该使用ON DELETE NO ACTION

是的,这不是我的偏好,但在应用程序或业务层处理数据完整性是一种已知的技术。 这需要经过良好的测试,以确保应用程序不会创建孤立项。 我使用过开发人员使用业务层来处理外键约束和级联删除的系统。 如果你在后端工作,很难理解关系和行为。 这需要有据可查。

这些天,大多数时候我看到应用程序大量使用软删除,这是一个足够不同的概念,级联硬删除会完全破坏它,特别是如果应用程序尝试混合这两种方法。

只有您才能真正回答您的特定项目是否会使用级联删除

这是一个有效的论点吗?

是的

何时应使用"删除时不执行任何操作"?

当另一个机制通过替代方式处理关系维护时,该机制会破坏该机制的有效性

最新更新