数据库事务

事物的特点:
原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。
一致性(consistency):在事务处理执行前后,数据库是一致的(数据库数据完整性约束)。
隔离性(isolcation):一个事务处理对另一个事务处理的影响。
持续性(durability):事务处理的效果能够被永久保存下来 。
一个事务只会有一个结果:要么成功、要么失败。

sql事务代码:

START TRANSACTION;
    UPDATE stud SET sname = '赵敏' WHERE sno = '1007';
    DELETE FROM stud WHERE sno = '1010';
ROLLBACK / CIOMMIT;

Java实现数据库事务:

@Test
    public void transaction() throws Exception{
        //1、加载连接器(驱动)
        Class.forName("com.mysql.jdbc.Driver");
        //2、建立连接
        String url = "jdbc:mysql://127.0.0.1:3306/mydata?characterEncoding=utf8&useSSL=true";
        String user = "root";
        String password = "1234";
        Connection con = DriverManager.getConnection(url, user, password);
        //3、获取语句对象
        Statement st = con.createStatement(); 

        try {
            con.setAutoCommit(false); //设置自动提交属性为false,默认为true
            //4、对数据库表进行操作(增删改查)
            String sql = "INSERT INTO student(sno,sname,age,saddress) VALUES ('1012','小明',27,'益阳');";
            st.execute(sql);
            sql = "DELETE FROM student WHERE sno = '1012';";
            st.execute(sql);
            sql = "UPDATE student SET saddress = '中原' WHERE sname='杨过';";
            st.execute(sql);
            con.commit();
        } catch (Exception e) {
            con.rollback();
        }finally{
            con.setAutoCommit(true);//还原自动提交属性
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

事务隔离

这里写图片描述
read-uncommitted:当两个客户端分别开启事务时,设置隔离级别为read-uncommitted的客户端能实时查看另一个客户端的数据异动,即使另一个客户端事务还未最终提交(commit)。

read-committed:当两个客户端分别开启事务时,设置隔离级别为read-uncommitted的客户端能查看另一个客户端已提交(commit)的数据异动。

repeatable-read:这是客户端的默认隔离级别,当两个客户端分别开启事务时,只要本身事务没有最终完成,所看到的数据不会受其他事务的影响。

serializable:这是事务隔离的最高级别,在进行查询时就会对表或行加上共享锁,其他事务对该表将只能进行读操作,而不能进行写操作。

说到事务,提两个命令:
select @@tx_isolation; //查看当前客户端事务隔离级别:
set session transaction isolation level read uncommitted/read committed/repeatable read/serializable ;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值