我应该使用 CASCADE DELETE 规则吗? [复制]

2024-01-10

重复:何时/为何在 SQL Server 中使用级联? https://stackoverflow.com/q/59297/1288

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


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用 CASCADE DELETE 规则吗? [复制] 的相关文章

  • Linq 选择与另一个表中的 ID 相等的项目

    我不确定这怎么可能 但我有两个表 我想通过表 1 的值从表 2 中获取值 表 1 有一个名为 rank 的外键 它是int 表 2 有一个名为 name 的值 它是string 现在表 1 的 排名 与表 2 的 ID 相关 所以当我说 v
  • ELMAH 错误和经典 Asp

    我们已经在我们拥有的 ASP NET MVC 网站上使用 ELMAH 进行错误日志记录 但我们的主网站仍然是经典的 asp 我已经开始为该网站创建错误处理 日志记录结构 但我认为它如果我们能够在所有应用程序中保持错误日志记录的一致性 那就太
  • Postgres 上的 C 语言环境和 Posix 语言环境有什么区别?

    我知道 Postgres 上的数据库区域设置负责国家字符的正确顺序 正确的小写 大写等 但为什么有两种语言中立的语言环境 posix and c 它们之间有什么区别 还是只是一个中立的语言环境有两个不同的名称 UPDATE正如 Magnus
  • 从 CTE 插入

    WITH DTL AS SELECT CMPI CODE CMN CDTY MTRL CMI WT FACTOR CMI CNTRCT RATE PL PRESENT PRICE TRM CODE ROUND NVL PRESENT PRI
  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • SQL 中的代码重用和模块化

    代码重用和模块化对于 SQL 存储过程编程来说是一个好主意吗 如果是这样 将这些功能添加到 SQL 存储过程代码库的最佳方法是什么 我通常为常见且重复的任务创建标量值函数 我发现它不仅可以简化与现有程序类似的新程序的开发 而且还有助于错误跟
  • 金融 - 计算到期收益率

    我读了this https stackoverflow com questions 1173555 open source financial library specifically yield to maturity发布关于 net 库
  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • 我想从 Crystal Report .rpt 文件中提取 SQL 查询,有办法做到这一点吗?

    我想从 Crystal Report rpt 文件中提取 SQL 查询 有办法做到这一点吗 我没有任何 Crystal Reports 产品 只有 rpt 文件 下面是一个 Net 代码示例 它从给定目录中的所有 Crystal Repor
  • 随机排列每行的列值

    我正在使用 C NET 开发多项选择题考试生成器 每次做出报告时 都会在数据库中随机挑选问题 并随机调整选项 我可以做随机问题部分 但我不能做选择的洗牌 我有一张表 其中一行如下 question answer distractor1 di
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count
  • xQuery LIKE 运算符?

    有没有办法以与 SQL 相同的方式使用 XQuery 执行 LIKE 操作 我不想构造一些 startswith endswith 和 contains 表达式 我想要实现的目标的示例 for x in user where x first
  • PostgreSQL & regexp_split_to_array + 取消嵌套

    我有这样的绳子 测试1 纽约 X 测试 2 芝加哥 Y 测试 3 宾夕法尼亚州哈里斯堡 Z 我需要的结果是 Column1 Column 2 Column3 Test 1 new york X Test 2 chicago Y Test 3
  • 使用 AT TIME ZONE 获取指定时区的当前时间

    我正在尝试使用新的在 SQL Server 2016 和 Azure SQL 中 我只是想获取伦敦的当前时间datetime 针对夏令时进行调整 运行以下所有命令时 伦敦时间为凌晨 3 27 点 第一步是获得一个datetimeoffset
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • If Else 条件的 SQLite 语法

    我正在使用 SQLite 数据库 我的表有一个名为 密码 的文本列 早些时候 为了检索我用来执行简单操作的值select from myTable询问 但现在的要求是 如果Password值不是NULL那么我需要将其显示为 是 或 否 它是
  • 选择两列中两个日期之间的记录

    如何选择两列中两个日期之间的记录 Select From MyTable Where 2009 09 25 is between ColumnDateFrom to ColumnDateTo 我有一个日期 2009 09 25 我喜欢选择
  • 从 SQLCE 4 迁移到 SQL Server 2008

    因此 作为早期采用者 我开发了一个基于 SQLCE4 ASP Net MVC3 和实体框架CTP5 http www microsoft com downloads en details aspx FamilyID 35adb688 f8a
  • sql脚本变量默认值

    我有一个脚本文件 例如测试 sql 我想从另一个脚本调用它 比如 caller sql 在 sqlcmd 模式下使用 r test sql 这工作正常 但我想在 test sql 中使用脚本变量 当我从 caller sql 调用 test
  • 如何在SQL Compact Edition中导入数据? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我似乎没有找到合适的工具 也没有找到

随机推荐