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