gpt4 book ai didi

sql-server - 何时/为何在 SQL Server 中使用级联?

转载 作者:行者123 更新时间:2023-12-01 16:36:35 25 4
gpt4 key购买 nike

在 SQL Server 中设置外键时,在什么情况下应该在删除或更新时级联外键,其背后的原因是什么?

这可能也适用于其他数据库。

我最重要的是寻找每个场景的具体示例,最好是来自成功使用它们的人。

最佳答案

到目前为止我所看到的摘要:

  • 有些人根本不喜欢级联。

级联删除

  • 当关系的语义可能涉及排他的“属于……的一部分”描述时,级联删除可能有意义。例如,OrderLine 记录是其父订单的一部分,并且 OrderLine 永远不会在多个订单之间共享。如果 Order 消失,OrderLine 也会消失,而没有 Order 的行将会出现问题。
  • 级联删除的典型示例是 SomeObject 和 SomeObjectItems,其中如果没有相应的主记录,项目记录的存在就没有任何意义。
  • 如果您要保留历史记录或使用仅将已删除位列设置为 1/true 的“软/逻辑删除”,则不应使用级联删除。

级联更新

  • 当您跨表使用真实键而不是代理键(身份/自动增量列)时,级联更新可能会有意义。
  • 级联更新的典型示例是当您拥有可变外键(例如可以更改的用户名)时。
  • 您不应该将级联更新与身份/自动增量列的键一起使用。
  • 级联更新最好与唯一约束结合使用。

何时使用级联

  • 在允许操作级联之前,您可能希望从用户那里获得额外的强力确认,但这取决于您的应用程序。
  • 如果外键设置错误,级联会给您带来麻烦。但如果你做得对的话应该没问题。
  • 在没有彻底理解级联之前,使用级联是不明智的。然而,这是一个有用的功能,因此值得花时间去理解。

关于sql-server - 何时/为何在 SQL Server 中使用级联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com