sql - 我应该使用 CASCADE DELETE 规则吗?

标签 sql sql-server cascade

Duplicate of: When/Why to use Cascading in SQL Server?

我一直不敢使用 DELETE CASCADE,但随着我变得更加自信(懒惰:D),我在想它有多糟糕,使用它是最佳实践还是应该避免它,用老式的方式清理我的外键等(使用存储过程)?

最佳答案

ON DELETE CASCADE 没问题,但前提是相关行确实是要删除的行的逻辑扩展。例如,DELETE ORDERS 可以删除关联的 ORDER_LINES,因为显然您想要删除此订单,它由标题和一些行组成。另一方面,DELETE CUSTOMER 不应删除关联的订单,因为订单本身很重要,它们不仅仅是客户的属性。

思考这个问题的一种方法是:如果我发出 DELETE X 并且它也删除了 Y,我会高​​兴还是不高兴?如果我发出 DELETE X 并被告知“无法删除 X,因为 Y 存在”,我会因为这种保护而感到高兴,还是会因为带来的不便而感到恼火?

关于sql - 我应该使用 CASCADE DELETE 规则吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/278392/

相关文章:

sql - 按月分解日期范围

sql - 外键引用的表能否依赖于另一个字段的内容?

sql-server - 使用特定单词搜索表列

sql - IN 运算符 SQL

没有 mdi 父级的 C# 级联表单?

sql - 在关系数据库中存储分层数据有哪些选项?

mysql - 修复对 mysql 的查询

mysql - hibernate 不会在 mysql 中生成删除级联以映射 HashMap

sql-server - 将 db_denydatawriter 角色分配给用户 dbo

sql - 删除和更新级联不会影响 SQLite 中的子表?