在循环中调用配置了事务的方法,如何才能部分回滚?

Alastor_wu 发布于 2016/01/19 14:52
阅读 1K+
收藏 0


//	@Transactional
	@Override
	public void outter(int num,int step) {
		for (int i = num+1; i <= num+step; i++) {
			this.inner(i);
		}
	}
	
	@Transactional(propagation=Propagation.REQUIRED)
	@Override
	public void inner(int index) {
		jdbcTemplate.update("INSERT INTO `t_unit_account` (`id`, `available`, `open_fund`, `locked`) VALUES (?, ?, ?, ?)", index, index, index, index);
		if(index==3){
			int ii = 1/0;
			System.out.println(ii);
		}
	}



以上为代码,如果循环插入十条数据,在循环到第三次的时候报错,如何配置才能只回滚第三次的数据库操作,而不回滚前两次的数据库操作?

试了好多次,要么事务完全没回滚,要么就把前三次的全都回滚了

新手小白求解






加载中
0
土匪boy
土匪boy
批量操作
0
_
_Yud
需要设备checkpoint才能回滚到指定的位置.
0
mark35
mark35
每次循环开始前保存事务point,如果出错则回滚到此point
0
妹子楼顶有鸽子
妹子楼顶有鸽子
inner新开一个事务
0
周翼翼
周翼翼

-- ORACLE

-- mysql

http://dev.mysql.com/doc/refman/5.5/en/savepoint.html

0
返回顶部
顶部