事务指逻辑上的一组操作,组成这组操作的各个单元要么全部成功,要么全部不成功。
数据库开启事务命令DTL:start transaction 开启事务,Rollback 回滚事务,Commit 提交事务
A---B转账SQL:update account set money=money-100 where name='a'
update account set money=money+100 where name='b'
开启数据库 cmd命令:mysql -u root -p 输入密码登陆数据库 ; use 数据库名称 对某数据库再进行增删查改操作
begin; 开启事务 没写commit数据不会提交,若断电或者关闭则数据回滚
Java语言中,事务测试
@Test
public void test1(){
Connection conn=null;
PreparedStatement ps=null;
try{
conn=DBUtils.getConnection();
conn.setAutoCommit(false); //相当于begin,开启事务
ps=conn.preparedStatement("update account set money=money-100 where name='a'");
ps.executeUpdate();
ps=conn.preparedStatement("update account set money=money+100 where name='b'");
ps.executeUpdate();
conn.commit(); //相当于commit,提交事务
}catch(Exception e){
try{
conn.rollback(); //回滚事务
}catch(SQLException e1){
e1.printStackTrace();
}
e.printStackTrace();
}finally{
DBUtils.closeAll(null,ps,conn);
}
}