SQL Server上的删除集为空错误

SQL Server上的删除集为空错误,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,在我的数据库中,我有一个地址表,该表与其他表(如客户、员工等)一起用作外键中的主表 这显示了地址和客户之间的关系,其中客户有两个地址 目前,FK设置为删除无操作时的,我开始将其更改为删除时的,设置为NULL 这对于只有一个地址列的大多数表来说都很有效。在一个只有一个地址列的特定表和所有有多个地址列的表上,我得到一个错误: 味精1785,第16级,状态1,第1行 在表“customers”上引入外键约束“FK_customers\u shipping_address”可能会导致循环或多个级联路径。

在我的数据库中,我有一个地址表,该表与其他表(如客户、员工等)一起用作外键中的主表

这显示了
地址
客户
之间的关系,其中
客户
有两个地址

目前,FK设置为删除无操作时的
,我开始将其更改为删除时的
,设置为NULL

这对于只有一个地址列的大多数表来说都很有效。在一个只有一个地址列的特定表和所有有多个地址列的表上,我得到一个错误:

味精1785,第16级,状态1,第1行
在表“customers”上引入外键约束“FK_customers\u shipping_address”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束

Msg 1750,第16级,状态1,第1行
无法创建约束。请参阅前面的错误


如果我没有使用
CASCADE
为什么会出现此错误?有没有办法解决这个问题呢?

设置空值
级联
在这个规则中的行为方式是一样的。不能有“多个级联路径”。这个信息有点不清楚


这是SQL Server引擎的限制。你对此无能为力。您自己实现级联逻辑。

错误消息是关于
FK\u客户\u发货地址的。
,但是,该约束不在您的SQLFIDLE中?@NickyvV I更新了SQLFIDLE。第二个外键被注释掉。如果取消注释并构建架构,将显示类似于上述的错误。请在上投票支持此功能。当表中只有1个地址外键列时,为什么会出现此错误?我认为您不理解“多重级联路径”的含义。这是关于多条路径到达同一个“子表”而缺少更好的词。SQL Server目前无法处理级联,如果多个路径可以指向同一行并对其进行修改,则无法将其设置为null。(这真令人伤心。)