环境说明:DELPHI7 + ORACLE 9Ivar
 AdoDs: TAdoDataset;
begin
  AdoDs.LockType := ltBatchOptimistic;
  AdoDs.CommandText := 'select a.id, a.sblxbh, b.lbmc from pw_t_byqb a, pw_t_A_TEST b where a.id< 20 and a.sblxbh=b.lbbh';
  AdoDs.Open;              // Open正常,有N条数据  AdoDs.Delete;            // 执行正常
  AdoDs.UpdateBatch()      // 问题出现了:删除pw_t_byqb表中的一条数据,同时也删除pw_t_A_TEST表中的关联数据。怎么会这样???

解决方案 »

  1.   

    单表的语句使用AdoDs.Delete/ADODataSet.UpdateBatch() 正常;如何实现对有关联的SQL语句的如下操作:
    1.用如上俩句代码完成正常的数据删除;
    2.除了写SQL脚本执行外,可有其他的方法实现?
      

  2.   

    TO zzxiaoma(小马):没用触发器。
      

  3.   

    TO myhgyp(也许是这样的,信不信由你):
      楼上的朋友说的有道理,执行数据的时候会处理多张表单;在数据的处理上,我们常常都会有多张表单的联合管理,这时候,如何实现用单ADO的联合语句管理?另我的ORACLE 在开发期激活数据时,DELPHI会马上无提示关闭。大家会吗?
      

  4.   

    我自己顶一下~~~~
    这问题不解决,我从该FORM下继承的所有窗口都要修改数据的操作,那有50个以上的窗口
    SOS!!!!!!
      

  5.   

    我自己顶一下~~~~
    这问题不解决,我从该FORM下继承的所有窗口都要修改数据的操作,那有50个以上的窗口
    SOS!!!!!!
      

  6.   

    这是ADO本身设计的,当从A表与B表中通过select进行连接时会得到连接之后的一个表,当从这表中删除数据时,ADO在会同时删除两表中相关的数据。其本质在ADO删除相关数据时会对每一个表分别执行delte语句。