你说的像是绕口令。
我的理解是:删除A表时,级联删除通过schoolName关联的表C中的数据。
同时级联删除通过“校名”关联的表D和表B中的数据。如果是这样的话,你肯定没办法通过一条delete语句来实现了。
一种方法是如楼上,所说的。在这四个表的表定义中,定义表级联关系,同时设置
成级联删除另一种方法是在表A中定义一个基于delete的触发器。定义时,注意删除的先后关系。

解决方案 »

  1.   

    同意楼上这样的删除,如果要一条语句删除的话就是TRIGGER-ON-DELETE或CASCADE-DELETE
      

  2.   

    一种方法是在这四个表的表定义中,定义表级联关系,同时设置
    成级联删除另一种方法是在表A中定义一个基于delete的触发器。定义时,注意删除的先后关系。
    或是分开写:
    delete 表B where 主键=(select 回风巷道ID 表A where 主键=1)
      and ((select count(*) from 表A where 回风巷道ID =(select 回风巷道ID 表A where 主键=1))<2)delete 表B where 主键=(select 顺槽巷道ID 表A where 主键=1)
      and ((select count(*) from 表A where 顺槽巷道ID =(select 顺槽巷道ID 表A where 主键=1))<2)delete 表B where 主键=(select 切眼巷道ID 表A where 主键=1)
      and ((select count(*) from 表A where 切眼巷道ID =(select 切眼巷道ID 表A where 主键=1))<2) delete 表A where 主键=1  delete 表D where 所属巷道ID =(select 回风巷道ID 表A where 主键=1)
      and ((select count(*) from 表A where 回风巷道ID =(select 回风巷道ID 表A where 主键=1))<2)