You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中超类型与子类型1:1关系的间接ON DELETE CASCADE问题

答案:不会间接删除对应的super_type记录

咱们来拆解一下每个外键的ON DELETE CASCADE规则到底是怎么生效的,就能明白为什么不会影响到super_type了:

  • sub_type.super_type_id的CASCADE规则:这个是单向触发的——只有当super_type中的某条记录被删除时,数据库才会自动删除sub_type中关联这条super_type的记录。反过来,sub_type记录的删除不会触发super_type的任何操作,因为外键的约束方向是从父表(super_type)指向子表(sub_type)的。
  • sub_type.other_table_id的CASCADE规则:这条规则的触发逻辑是——当other_table中的某条记录被删除时,数据库会自动删除sub_type中关联这条other_table记录的条目。

所以当你删除other_table的一条记录时,只会发生以下流程:

  1. 数据库找到所有sub_type中other_table_id匹配这条被删记录的行,删除它们;
  2. 到此为止,super_type中的对应记录完全不受影响,因为没有任何规则会因为sub_type的删除去触发super_type的删除操作。

简单总结:ON DELETE CASCADE是单向触发的,只有父表的删除会带动关联的子表记录删除,子表的删除不会反向影响父表~

内容的提问来源于stack exchange,提问作者Martin Heralecký

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:28:54