理解'级联约束可能导致循环或多个级联路径'

时间:2017-12-12 22:29:47

标签: sql-server foreign-keys entity-framework-core cascade

我在SQL Server中设置了一些表来存储回归的结果,以便以后可以检索它们并用于对不同的对象进行预测。

模型是层次结构的顶部,代表整个模型。模型作为多个术语和单个从属变量。术语表示在回归中用作独立变量的值。术语由多个变量组成。 99%的时间条款只有一个变量,但它的设置允许多个允许将来进行多项式回归之类的事情,例如,如果你想使用Height ^ 2作为值,那么高度变量将被包括两次一个单一的术语。 Variable表用于从特定对象类型中检索值。以下是关系的设置方式:

enter image description here

关系A ON DELETE CASCADE。当我删除模型时,我希望删除所有条款。

关系B ON DELETE RESTRICT

关系C ON DELETE SET NULL

关系D NO ACTION,因为VariableClass是一个可能永远不会被删除的静态表。

我希望关系B 也是CASCADE,所以当删除一个Term时,所有变量也都会被删除。当使用它设置迁移时,我收到此错误:

  

在表'Variable'上引入FOREIGN KEY约束'FK_Variable_Term_TermId'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。   无法创建约束或索引。查看以前的错误。

我理解了该消息的内容,并且查看图表看起来删除一个Term会删除变量,然后可以触发模型的删除等。但是关系C 是{{1并且SET NULL列允许空值,因此如果删除模型的从属变量,它应该只将列设置为空,对吗?

我可以保留原样,并在代码中处理删除带变量的条款,但只允许级联更简洁。

0 个答案:

没有答案