0
点赞
收藏
分享

微信扫一扫

每日复习2《事务》

AbrahamW 2022-04-15 阅读 63
sqlmysql

目录

一、什么是事务?

二、为什么要使用事务?

三、事务的四大属性(ACID)

四、事务的种类

五、JDBC事务

1.sql语句中

2.JDBC中

3.事务的四个隔离级别


一、什么是事务?

事务就是你对数据的一次操作,这一次操作中可以是一句简单的添加语句,也可以是对多张表的多次操作

二、为什么要使用事务?

以为它安全,为什么安全?比如张三给李四转账,我们要从张三的账户扣钱,往李四的账户加钱,但是在执行时,张三扣钱的sql执行成功了,李四加钱的sql出错了,这时会出现张三的钱少了,李四的钱没加。怎么解决这种隐患呢?本次交易就是一个事务,在事务中,所有的sql要么都成功,要么都失败,这就到了事务的四个特性。

三、事务的四大属性(ACID)

  1. 原子性(atomicity):一个事务中有多个sql,这些sql要么都做,要么都不做;
  2. 一致性(consistency):一个事务中有多个sql,这些sql要么都成功,要么都失败,不存在上面的情况(张三钱少了,李四钱没变);
  3. 隔离性(isolation):顾名思义,就是各个事务之间相互隔离,互不影响
  4. 持久性(durability):事务一旦提交,数据便保留在数据库中。

四、事务的种类

  1. JDBC事务
  2. JTA(Java Transaction API)事务
  3. 容器事务
  4. 分布式事务

五、JDBC事务

1.sql语句中

还是拿demo1表

查询:

开启事务,修改name,查看表信息 

 事务回滚,信息查看

 总结:

开启事务:START TRANSACTION 

提交事务:COMMIT;

回滚事务:ROLLBACK;

2.JDBC中

意思还是sql中的意思,只不过换了种形式

Connection connection;
try{
    //创建链接
    connection = JDBCUtil.getConnection();
    //开启手动提交事务(关闭自动提交事务)
    connection.setAutoCommit(false);
    //自己的数据操作
    *** ***
    //提交事务
    connection.commit();
}catch(Exception e) {
    e.printStackTrace();
    //异常回滚事务
    connection.rollback();
}

提出问题:

在sql语句表达事务时发现一个问题,在开启事务后对数据进行修改,查看数据是我们修改过的,回滚后再看就有回到了修改前,那么问题来了?

问题一:

这个问题叫脏读,因为读取到了没有提交的数据,这种数据叫脏数据,所以叫脏读

问题二:

这个问题叫不可重复读 ,它与脏读的区别在于没有脏数据

问题三

两个事务都对数据进行修改

 上面类似问题又产生了另一个知识点:事务的隔离级别

3.事务的四个隔离级别

1.Read uncommitted:读未提交

六、JTA(Java Transaction API)事务

七、容器事务

八、分布式事务

没学到呢,后续更新

七种传播行为:required、supports、mandatory、requires_new、not supported、never、nested

今日没写完,明日更新

举报

相关推荐

React复习(2)

Java复习_2

vue2--复习

Go语法复习 2

C语言复习2

JS基础复习(2)

CSSF复习总结(2)

C++复习笔记2

0 条评论