1、事务概念:
      一组sql语句操作单元,组内所有SQL语句完成一个业务,如果整组成功:意味着全部SQL都实现;如果其中任何一个失败,意味着整个操作都失败。失败,意味着整个过程都是没有意义的。应该是数据库回到操作前的初始状态。这种特性,就叫“事务”。

2、为什么要存在事务?
   1)失败后,可以回到开始位置
  2)没都成功之前,别的用户(进程,会话)是不能看到操作内的数据修改的

3、事务4大特征ACID:

  1)原子性[atomicity]:功能不可再分,要么全部成功,要么全部失败
  2)一致性[consistency]:事务要求所有的DML语句操作的时候,必须保证同时成功或者同时失败
  3)隔离性[isolation]:事务A和事务B之间具有隔离性
  4)持久性[durability]:是事务的保证,事务终结的标志(内存的数据持久到硬盘文件中)

3、相关概念:

【SQL执行过程】1)执行阶段   2)将执行结果,提交到数据库的阶段

其中我们的事务日志,就是保存执行阶段的结果,如果用于选择提交,则才将执行的结果提交到数据库。

默认的执行方式叫做,自动提交。执行完毕,自动完成提交工作。如果你想要所有SQL语句全部成功,就需要关闭自动提交功能。
“自动提交”:存在一个系统变量,Autocommit可以对自动提交进行设置。

4、事务操作:

方法一:

show variables like 'autocommit'; #查看自动提交是否开启
set autocommit=1(开启自动提交)
set autocommit=0(关闭自动提交),关闭后,再次执行相应的更新语句发现,在其它连接(会话)中查看数据,没有发生变化,因为结果没有提交。

方法二(提倡):

1)开启事务:start transaction; 关闭自动提交。如果事务结束了,成功或者失败,都会将自动提交机制,回到start时的状态。
2)成功-->提交:commit;
3)失败-->回滚:rollback;

5、重要限制:

  存储引擎必须是innodb才能生效。

6、个人理解:

    把事务看作一个容器,暂时在该容器(start transaction)中操作(增删改查),如果不出错,就立即更新数据库(commit),即公开可见。如果出错,就立即回滚数据库(rollback),即恢复初始状态,数据库更新停止。

可以高效地防止错误的发生,快速恢复至初始化状态。

7、实验测试:

步骤一:新建两张表,一张是班费表(class),另一张是学生个人钱财表(stu)。

步骤二:开启事务进行数据操作,注意同时开两个数据库窗口,方便我们查看实验效果

窗口1:

此时,可以查看到窗口1中的数据已经更新(我的理解是仅仅是在“事务容器”内更新完成),但是还没有上传至数据库真正更新。在另一个窗口中可见数据库并没有更新成功:

此时,必须在窗口1中的事务中输入commit命令,才能完成真正意义上的更新,无论开多少个窗口,都可以看到数据更新的内容:

如果在“事务容器”中更新数据时出现问题,就需要使用rollback命令立即恢复到初始状态。

事务:Transaction详解的更多相关文章

  1. MySQL——事务(Transaction)详解

    原文:https://blog.csdn.net/w_linux/article/details/79666086

  2. Hibernate Session & Transaction详解

    Hibernate Session & Transaction详解 HIbernate中的Session Session是JAVA应用程序和Hibernate进行交互时使用的主要接口,它也是持 ...

  3. (转)Spring事务管理详解

    背景:之前一直在学习数据库中的相关事务,而忽略了spring中的事务配置,在阿里面试时候基本是惨败,这里做一个总结. 可能是最漂亮的Spring事务管理详解 https://github.com/Sn ...

  4. 【Spring】——声明式事务配置详解

    项目中用到了spring的事务: @Transactional(rollbackFor = Exception.class, transactionManager = "zebraTrans ...

  5. spring事务管理(详解和实例)

    原文地址: 参考地址:https://blog.csdn.net/yuanlaishini2010/article/details/45792069 写这篇博客之前我首先读了<Spring in ...

  6. 可能是最漂亮的Spring事务管理详解

    Java面试通关手册(Java学习指南):https://github.com/Snailclimb/Java_Guide 微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么 ...

  7. 可能是最漂亮的Spring事务管理详解 专题

    微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允 ...

  8. 最漂亮的Spring事务管理详解

    SnailClimb 2018年05月21日阅读 7245 可能是最漂亮的Spring事务管理详解 Java面试通关手册(Java学习指南):github.com/Snailclimb/- 微信阅读地 ...

  9. Net Core中数据库事务隔离详解——以Dapper和Mysql为例

    Net Core中数据库事务隔离详解--以Dapper和Mysql为例 事务隔离级别 准备工作 Read uncommitted 读未提交 Read committed 读取提交内容 Repeatab ...

  10. Redis的事务功能详解

    Redis的事务功能详解 MULTI.EXEC.DISCARD和WATCH命令是Redis事务功能的基础.Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项: >Re ...

随机推荐

  1. 基于Python接口自动化测试框架(初级篇)附源码

    引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局 ...

  2. Winfom递归绑定树节点

    /// <summary> /// 绑定树节点 /// </summary> /// <param name="pid"></param& ...

  3. 群晖DSM修改ssh权限实现免密码登陆

    问题 使用ssh-id-copy正确上传公钥后依然无法免密码登陆 原因 群晖DSM中.ssh文件夹权限不当 解决 赋予正确权限 admin@DiskStation:/var/services/home ...

  4. mac屏幕录制

    屏幕录制 shift+command+5 录制完成后将文件拖拽到要保存的文件中

  5. Java8之Stream详解

    Java8中提供了Stream对集合操作作出了极大的简化,学习了Stream之后,我们以后不用使用for循环就能对集合作出很好的操作.   一.流的初始化与转换   Java中的Stream的所有操作 ...

  6. Educational Codeforces Round 81 (Rated for Div. 2) 题解

    过了n天补的题解:D AB就不用说了 C. Obtain The String 思路挺简单的,就是贪心,但是直接贪心的复杂度是O(|s|*|t|),会超时,所以需要用到序列自动机 虽然名字很高端但是就 ...

  7. (转)HashMap和HashTable源码

    转自: http://www.cnblogs.com/ITtangtang/p/3948406.html http://frankfan915.iteye.com/blog/1152091 一.Has ...

  8. 基于 Octotree 的[码云]文件树插件

      之前一直在用github上面的Octotree,现在在用gitee(主要是github的访问速度太慢了).   现在主要转到了gitee上面了,那么有没有基于 Octotree 的[码云]文件树插 ...

  9. RN开发-Linux开发环境搭建(Ubuntu 12.04)

    1.首先安装JDK 2.安装Android开发环境 3.安装node.js 3.1 官网下载 : node-v6.9.1-linux-x64 3.2 添加环境变量 sudo vi /etc/profi ...

  10. springboot整合websocket实现客户端与服务端通信

    定义  WebSocket是通过单个TCP连接提供全双工(双向通信)通信信道的计算机通信协议.此WebSocket API可在用户的浏览器和服务器之间进行双向通信.用户可以向服务器发送消息并接收事件驱 ...