如下代码:
表示为先将数据添加到主表中,然后再添加到从表中,,
怎么实现这个事务?
谢谢!!   if(flag){
      //将备货单信息加载到数据库中
     //out.println(number);
      String sql="{call proc_addDepotOutHelpDraw(?,?,?,?,?,?,?,?)}";
      try{
           CallableStatement cstmt=conn.prepareCall(sql);
           cstmt.setString(1,number);
           cstmt.setString(2,supplyName);
           cstmt.setDate(3,drawDate);
           cstmt.setString(4,procureNumber);
           cstmt.setString(5,tabulate);
           cstmt.setString(6,re);
           cstmt.setString(7,session.getAttribute("userID").toString());
           cstmt.setString(8,request.getRemoteAddr());
           cstmt.executeUpdate();
           cstmt.close();
           conn.closeConn();
      }catch(SQLException ex){
          out.println("增加外协领料记录错误(DepotOutHelpDraw.jsp):"+ex.getMessage());
      }      //逐条添加记录
      sql="{call proc_addDepotOutHelpDrawList(?,?,?,?,?)}";
      for(int i=0;i<_textfield1.length;i++){
       try{
             CallableStatement cstmt=conn.prepareCall(sql);
             cstmt.setString(1,number);
             cstmt.setString(2,_textfield1[i]);
             cstmt.setString(3,_textfield6[i]);
             cstmt.setString(4,session.getAttribute("userID").toString());
             cstmt.setString(5,request.getRemoteAddr());
             cstmt.executeUpdate();
             cstmt.close();
             conn.closeConn();
 //修改库存数量
             functions.setResAbateNumber(_textfield1[i].toString(),Integer.parseInt(_textfield6[i]),out);
        }catch(SQLException ex){
           out.println("增加外协领料明细错误(DepotOutHelpDraw.jsp):"+ex.getMessage());
        }
      }
      //functions.setListNumber(4,out);
      functions.writeNote("增加外协领料单:["+number+"]成功...",1,request.getRequestURI(),session.getAttribute("userID").toString(),request.getRemoteAddr());
      functions.alertMsg("外协领料单填写完毕,请等待审核",out);
      out.println("<script>location.href='DepotOutHelpDraw.jsp'</script>");
   }