这是我目前正在使用的数据库模型的简化版本:
域的快速解释:
- 每个商店可以有多个客户。每个客户实体引用单个应用程序用户帐户(即用户和商店之间的多对多关系)。
- 每个商店都可以设置折扣类别(商店也可能没有设置)。
- 在商店购物时,可以将客户添加到折扣类别以获得折扣。
我目前在客户和商店之间的 FK 上有一个“ON DELETE CASCADE”。即,商店的客户在商店被删除时被删除。我在折扣类别和商店之间的 FK 上也有一个“ON DELETE CASCADE”。即删除店铺时,删除店铺的折扣类别。
现在考虑店主想要删除折扣类别的情况。我想在客户和折扣类别之间的 FK 上设置一个“ON DELETE SET NULL”。
如果我尝试在 SqlServer 中执行此操作,它会抱怨通常的“多级联路径”问题。
问题:是否有任何优雅的方法来改造这个问题,以便在删除折扣类别时将客户从折扣类别中删除(即将 FK 设置为空),同时仍然保留我的其他级联关系?假设我无法离开 SqlServer。