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. win10系统中按顺序安装jdk、tomcat

    一.首先安装jdk1.8,重点在于配置环境 安装步骤见另一篇软件安装中的博客 配置环境 1.首先要打开系统环境变量配置的页面.具体操作是:桌面上找到“此电脑”,然后右键 “属性”. 然后打开高级系统配 ...

  2. 提取 Microsoft.ReportViewer等dll

    ReportViewer 在开发环境没问题 发布以后可能会提示找不到 Microsoft.ReportViewer 下的几个dll 可以用用下面脚本在开发服务器上提取 相应的dll @SET dest ...

  3. Wannafly Camp 2020 Day 2B 萨博的方程式 - 数位dp

    给定 \(n\) 个数 \(m_i\),求 \((x_1,x_2,...,x_n)\) 的个数,使得 \(x_1 \ xor\ x_2\ xor\ ...\ xor\ x_n = k\),且 \(0 ...

  4. 小总结:快速幂+贪心————Bit Mask____UVA 10718 多多去理解去温习哦!

    传送门:https://vjudge.net/problem/UVA-10718 Preview: bitstream:a flow of data in binary form. in bit-wi ...

  5. C++中public、protected、private的区别(转载)

    转载:https://blog.csdn.net/vanturman/article/details/79393317   首先记住一点:派生类能且只能访问基类的public和protected成员! ...

  6. 用windows 画图 裁剪照片

    图片大小432*312 1.裁剪大小:打开画图--找到矩形选择 形状裁剪完之后,像素会有相应的变化 2.单纯调整像素:  打开画图----重新调整大小(去掉保持纵横比之后可以任意调整大小) 题目:上传 ...

  7. linux用户管理相关命令

    查看用户以及用户组: cat /etc/group   [root@izuf60kjjii4iwkhdsly3bz html]# cat /etc/group   内容具体分析 /etc/group ...

  8. [SHOI2001] 小狗散步 - 二分图匹配

    考虑到每次与主人相遇之前最多只去一个景点,很容易转化为匹配问题 由于数据很小,我们不妨枚举每个相遇点间隙和每个景点,判断是否来得及,如果来得及就连边 沙雕题搞了二十来分钟,我是憨憨 #include ...

  9. Postgresql Json Sql

    a detailed website about json sql query; official website: here, chinese version: here Json query: - ...

  10. for循环与闭包

    Es5 function box(){ var arr = []; ;i<;i++){ arr[i] = (function(num){ //自我执行,并传参(将匿名函数形成一个表达式)(传递一 ...