我现在的情况是
向一张表A插入一条记录的同时要向表B循环插入若干条记录,这个事务要怎么写,正常事务的写法是同时分别向两表插入两条记录不成功就回滚。
我的相当于
sql="insert into a values(……)"
excuteUpdate(sql)while(条件)
{
sql="insert into b values(……)"
excuteUpdate(sql)
}
如果表A插入不成功,那么表B的所有记录回滚

解决方案 »

  1.   

    //循环钱设置事务
    connection.setAutoCommit(false);
    while(条件)
    {
    sql="insert into b values(……)"
    excuteUpdate(sql)

    //循环后提交事务
    connection.commit();//如果有异常要回滚事务
    connection.rollback();
      

  2.   

    那向a表插入记录是不是就放while上面
      

  3.   

    把往A插一条数据,B插N条看错一个原子操作
    代码类似于
    try{
       insert a
       foreach insert b
       ……
       connection.commit(); 
    }
    catch{connection.rollback();
    }
      

  4.   

    我现在是情况是虽然执行了事务,可是当A表插入后,向B表插入内容为空是不回滚的,而我希望如果b插入内容为空时也是回滚的。我想可能要设两个回滚点,第一在向A表插入后,判断是否插入成功,失败就回滚,第二点是在B表插入后判断是否成功,否则回滚,但具体设置语句我不会写