【发布时间】:2015-03-18 12:54:59
【问题描述】:
在我的数据库中,我有一个地址表,该表用作外键中的主表与其他表(例如客户、员工等...)
这个SQLFiddle 显示了addresses 和customers 之间的关系,其中customers 有2 个地址。
目前 FK 设置为 ON DELETE NO ACTION,我开始将它们更改为 ON DELETE SET NULL。
这对于大多数只有一个地址列的表来说效果很好。在只有一个地址列的特定表和有多个地址列的所有表上,我收到错误:
消息 1785,第 16 级,状态 1,第 1 行
在表 'customers' 上引入 FOREIGN KEY 约束 'FK_customers_shipping_address' 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。消息 1750,第 16 级,状态 1,第 1 行
无法创建约束。查看以前的错误。
如果我没有使用CASCADE,为什么会出现此错误?有没有办法解决它?
【问题讨论】:
-
错误信息是关于
FK_customers_shipping_address,但是,那个约束不在你的SQLFiddle中? -
@NickyvV 我更新了 SQLFiddle。第二个外键被注释掉。如果取消注释并构建架构,则会显示类似于上述的错误。
-
在connect上投票支持此功能。
标签: sql sql-server sql-server-2014