假设我有4个表格如下图所示
ad
- > advertisable
< - advertisable_product
- > product
3 ->
表示如下,所有这些都是OneToOne
相关的
ad
有一个FK到advertisable
(可以为空)advertisable_product
的FK为advertisable
advertisable_product
的FK为product
我在3.
问题是:删除product
后,删除级联约束会自动删除advertisable_product
,但如何删除advertisable
也会删除ad
并将{{1}}中的FK设置为空。
我能弄清楚的唯一方法就是写一个触发器来做到这一点。是否有更好的解决方案或更好的设计来实现这一目标?
欢迎任何建议或评论,谢谢〜
答案 0 :(得分:0)
这是不可能的。根据FK逻辑,还有另一种与可广告相关的产品。
想象一下有1个可广告 - “A1”和2个产品“P1”和“P2”。 advertisable_product 有2条记录
A1 P1
A1 P2
现在删除“P1”。 “A1 P1”被级联删除,但“A1”无法删除,因为它用于“A1 P2”