我正在尝试对数据库中的某些表定义一些约束。 我有下表:
目的地:
ID
(PK),Description
托盘:
ID
(PK)、ID_Destination1
、ID_Destination2
并且我想将
ID_Destination1
和 ID_Destination2
定义为引用表 Destinations ID 的外键。
但是,当我尝试使用约束
ON UPDATE CASCADE
和 ON DELETE SET NULL
定义这些外键时,出现以下错误:
在表“Pallets”上引入 FOREIGN KEY 约束“FK_PalletDest1”可能会导致循环或多级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
我设法创建了仅定义一个带有约束的外键的表
ON UPDATE SET NULL
ON DELETE SET NULL
,但我无法创建两个外键。
我读到一种解决方案可能是设置
ON UPDATE NO ACTION
ON DELETE NO ACTION
,并管理代码中 Destinations 中行的更新/删除,但我想了解为什么会出现此错误。为什么这些关系会产生循环呢?有没有更好的解决方案来绕过这个错误?
感谢任何能够阐明这一点的人。
根本不支持“多个级联路径”之后的级联删除。这是可以做到的,多年来一直有人要求实施它,但从未被优先考虑。
您可以在此处查看反馈项目并对其进行投票:https://feedback.azure.com/d365community/search/04fe6ee0-3b25-ec11-b6e6-000d3a4f0da0?q=multiple+cascade+paths