数据库的事务

事务的基本介绍
概念:
* 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
* 事务的四大特征:
1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
3. 隔离性:多个事务之间。相互独立。
4. 一致性:事务操作前后,数据总量不变
操作事务的常用方法:

conn.setAutoCommit(0);//修改系统非自动提交。
conn.commit();//事务提交
conn.rollback();//事务回滚
SavePoint sp=con.setSavePoint();//设置保存点
conn.rollback(sp);//返回保存点
conn.setTransactionIsolation();//设置隔离级别
conn.getTransactionIsolation();//获取隔离级别

用一个例子说明;
数据库中有人员和薪水信息,如果在执行过程中遇到突发事件,那么数据库就会产生错误。
初始化的数据库

public class Tran1 {
    public static void main(String[] args) {
        PreparedStatement stat=null;
        PreparedStatement stat2=null;
        PreparedStatement stat3=null;
        Connection conn=null;
        try {
            conn=DbUtill.getConn();
            //1.关闭自动提交
//            conn.setAutoCommit(false);
            String sql1="update salarys set salary = salary - ? where id = ?";
            String sql2="update salarys set salary = salary + ? where id = ?";
            stat=conn.prepareStatement(sql1);
            stat2=conn.prepareStatement(sql2);
            stat.setInt(1,100);
            stat.setInt(2,1);
            stat2.setInt(1,200);
            stat2.setInt(2,2);
            stat.executeUpdate();
            int i = 3 / 0;
            stat2.executeUpdate();
 //			2.执行完毕后一起提交
//           conn.commit();
        } catch (SQLException e) {
            try {
                if(conn!=null){
                    conn.rollback();
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
}

执行完后
在这里插入图片描述
可以看到只有一条数据被更改了,违背了原子性原则。所以我们要开启事务,将自动提交关闭最后再一起提交,要么不提交要么两个都能修改成功。把上面代码的注释去掉就可以实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值