和你的表格的定义有关系,可以看看http://www.techonthenet.com/oracle/foreign_keys/foreign_delete.php

解决方案 »

  1.   

    楼上可能是指我表A的外键定义有问题吧?是这样的。表B中有个班级ID,对应与所有的班级;表A中有三个字段,将表B中的班级分类,分别是大班中班小班,这些大中小班分别有自己的ID并与班级ID一一对应。
      

  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)