我有一个表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的主键,因此在删除级联中应该起作用的关系只是父子关系,而不是超越父子关系。