具有嵌套外键的行上的DELETE请求



我有一个表B引用的表a,表C引用了表B。

这样:

  • 表A(pk:id(
  • 表B(pk:id,fk:A_id(
  • 表C(fk:B_id(

每个外键都有一个约束ON_DELETE:CASCADE,但是如果我试图删除表a,它会拒绝。之所以会发生这种情况,是因为表B中的行有指向表a的外键,而表C中的行则指向表B。

我相信我可以通过先删除表B,然后删除表A来解决这个问题。但是,有人能解释为什么不能删除吗?当然,它应该能够执行一个功能,向下访问外键的"层次结构"并按顺序删除所有内容?

感谢

在ON DELETE CASCADE操作中,如果父行被删除,它将首先删除子行,然后删除父行,以确保没有引用作为外键

至于您的问题,由于表B指的是表A的主键,而表C指的是表格B的主键,因此在删除级联中应该起作用的关系只是父子关系,而不是超越父子关系。

最新更新