mysql表多外键级联

时间:2014-03-12 03:25:42

标签: mysql sql jpa foreign-keys cascade

假设我有4个表格如下图所示

ad - > advertisable < - advertisable_product - > product

3 ->表示如下,所有这些都是OneToOne相关的

  1. ad有一个FK到advertisable(可以为空)
  2. advertisable_product的FK为advertisable
  3. advertisable_product的FK为product
  4. 我在3.

    上设置了 on delete cascade 约束

    问题是:删除product后,删除级联约束会自动删除advertisable_product,但如何删除advertisable也会删除ad并将{{1}}中的FK设置为​​空。

    我能弄清楚的唯一方法就是写一个触发器来做到这一点。是否有更好的解决方案或更好的设计来实现这一目标?

    欢迎任何建议或评论,谢谢〜

1 个答案:

答案 0 :(得分:0)

这是不可能的。根据FK逻辑,还有另一种与可广告相关的产品。

想象一下有1个可广告 - “A1”和2个产品“P1”和“P2”。 advertisable_product 有2条记录

A1 P1

A1 P2

现在删除“P1”。 “A1 P1”被级联删除,但“A1”无法删除,因为它用于“A1 P2”