mysql表多外键级联
假设我有4个相关的表,如下图所示mysql表多外键级联,mysql,sql,jpa,foreign-keys,cascade,Mysql,Sql,Jpa,Foreign Keys,Cascade,假设我有4个相关的表,如下图所示 广告-->可广告产品 这3个->表示如下,它们都是OneToOne相关的 ad有一个FK到可广告的(可空) advisable\u产品有一个FK toadvisable 可广告的产品有一个FK to产品 我已在删除级联上设置了约束3。 问题是:当产品被删除时,on delete cascade约束会自动删除可广告产品,但是如何使其同时删除可广告,并将ad中的FK设置为空。 我能弄明白的唯一方法就是写一个触发器来实现这一点。有没有更好的解决方案或更好的设计来实现这
广告
-->可广告产品
这3个->
表示如下,它们都是OneToOne
相关的
ad
有一个FK到可广告的
(可空)advisable\u产品
有一个FK toadvisable
可广告的产品
有一个FK to产品
3。
问题是:当产品
被删除时,on delete cascade约束会自动删除可广告产品
,但是如何使其同时删除可广告
,并将ad
中的FK设置为空。
我能弄明白的唯一方法就是写一个触发器来实现这一点。有没有更好的解决方案或更好的设计来实现这一点
欢迎提供任何建议或意见,谢谢~这是不可能的。根据FK的逻辑,可能还有另一种产品与广告相关 想象一下,有1个广告“A1”和2个产品“P1”和“P2”。 可投放广告的产品有2项记录 A1 P1 A1 P2
现在删除“P1”。“A1 P1”被级联删除,但“A1”无法删除,因为它用于“A1 P2”Hi StanislavL,可广告和可广告的产品是OneToOne,因此只有A1 P1是可能的,没有A1 P2FK不知道这一点。从您的业务逻辑来看,这在逻辑上是不可能的,但DB认为这是可能的。根据FKsOkay,我明白您的意思。所以,唯一的方法是手动写入逻辑,对吗?您可以为advisable_产品定义一个ON DELETE触发器,并删除advisable中的行