我正在处理一个项目,它的SQL Server数据库总是使用ON DELETE NO ACTION
,即使是Order-OrderItem场景。
我记得学校教授总是要求我们设置级联删除。
资深开发人员说,这是因为我们希望将所有逻辑保留在应用程序代码中,这意味着如果我们想删除Order
,我们的代码必须先删除OrderItem
。
这是一个有效的论点吗?什么时候应该使用ON DELETE NO ACTION
?
是的,这不是我的偏好,但在应用程序或业务层处理数据完整性是一种已知的技术。 这需要经过良好的测试,以确保应用程序不会创建孤立项。 我使用过开发人员使用业务层来处理外键约束和级联删除的系统。 如果你在后端工作,很难理解关系和行为。 这需要有据可查。
这些天,大多数时候我看到应用程序大量使用软删除,这是一个足够不同的概念,级联硬删除会完全破坏它,特别是如果应用程序尝试混合这两种方法。
只有您才能真正回答您的特定项目是否会使用级联删除
这是一个有效的论点吗?
是的
何时应使用"删除时不执行任何操作"?
当另一个机制通过替代方式处理关系维护时,该机制会破坏该机制的有效性