【问题标题】:Multiple Cascade Paths多级联路径
【发布时间】:2019-02-21 20:58:40
【问题描述】:

我遇到了多个级联路径错误的问题。这是我的表格:

表格(公司)
公司代码 (PK)
....

桌子(飞机)
飞机注册 (PK)
OwnerCode(FK 到 CompanyCode)
操作员代码(FK 到公司代码)
....

我只是想在更新公司的主键时更新飞机表中的 ownercode 和 operatorcode 外键。

使用触发器是否是解决此问题的正确方法?

【问题讨论】:

  • 我认为触发器是处理 SQL-Server 中多个级联路径的唯一方法。

标签: sql sql-server


【解决方案1】:

您可以将ON UPDATE CASCADE 添加到您的外键定义中,然后如果引用的键(即 Companies.CompanyCode)发生更改,值将自动更新。

编辑:但正如您在 cmets 中指出的,这不适用于具有两个外键引用同一列的表,因此对于这些情况,您必须使用触发器或执行以“受控”方式进行所有更新,例如通过更新引用列的存储过程。哪种方法更好取决于您的应用程序设计以及您的数据库的使用方式。

【讨论】:

  • 这就是我尝试过的,但它给了我错误“......可能导致循环或多个级联路径”。这是因为我有两个 FK 到同一个表,“OwnerCode”和“Operator Code” "。
  • 我的错,我没有立即明白这一点。我已经更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多