事务
事务就是,要么全部成功,要么全部失效
比如张三给李四转账1000元
1、查询张三账户余额,是否大于等于1000
2、张三账户数字减少1000
3、李四账户数字增加1000
这两步都成功才成功,有一步失败就不能提交事务,就要回滚
java结合mysql事务回滚(两种)
我的注释上写的就是sql语句
start transaction
try {
//设置为手动提交
//start transaction;
mapper.startTransaction();
//转账
//update test1 set money = money - 1000 where name='张三';
mapper.updateZhangSan();
//收账 - 报错
//update test1 set money = money + 1000 where name='李四'aaa;
mapper.updateLiSi();
//必须要提交,要不然没法落库
mapper.commit();
}catch (Exception e){
//回滚
mapper.rollback();
}
@@autocommit
try {
//设置为手动提交
//set @@autocommit = 0;
mapper.setAutoCommit(0);
//转账
//update test1 set money = money - 1000 where name='张三';
mapper.updateZhangSan();
//收账 - 报错
//update test1 set money = money + 1000 where name='李四'aaa;
mapper.updateLiSi();
//必须要提交,要不然没法落库
mapper.commit();
}catch (Exception e){
//回滚
mapper.rollback();
}finally {
//set @@autocommit = 1;
mapper.setAutoCommit(1);
}