什么叫做“事务”:

想象一个场景:

小明给小花 汇款 5000元 买 IPHONE,操作界面不用管,不管什么操作界面,最终都要落实到这样两条语句的执行:

update  存款表  set  money = money - 5000  where  账户=’小明’;

update  存款表  set  money = money + 5000  where  账户=’小花’;

当,第一条语句执行成功,突然断电了(或任何其他情况),就会造成数据的“不一致”。

要解决这个问题,就是“事务”的功能:

事务就是用来保证多条“增删改”语句的执行的“一致性”:要么都执行完成,要么都没有执行;

事务的特点:

  • 原子性:一个事务中的所有语句,应该做到:要么全做,要么一个都不做;
  • 一致性:让数据保持逻辑上的“合理性”,比如:一个商品出库时,既要让商品库中的该商品数量减1,又要让对应用户的购物车中的该商品加1;
  • 隔离性:如果多个事务同时并发执行,但每个事务就像各自独立执行一样。
  • 持久性:一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。

事务模式:

事务模式是指:

在我们的cmd命令行模式中,是否开启了“一条语句就是一个事务”的这个开关:

默认情况下(安装后),这个模式是开启的,称为“自动提交模式”;

set  autocommit = 1;

这样之后,每条增删改语句,都会立即生效;

我们可以把它关闭,那就是“人为提交模式”——即需要人为提交;

set  autocommit = 0;

这样之后,所有增删改语句,都必须使用commit之后,才能生效;

首先,我们以前的经验都是:一条增删改语句,一旦回车,执行就完成(前提是不出错);

现在,我们关闭该模式:

然后,再去执行一条简单的insert语句:

对比:

执行前:

然后,执行insert:

但是,再查看结果,即insert执行之后,数据并没有出现:

然后,再去“人为提交”:

然后,再核查数据,就有了:

事务执行的基本流程

1,开启一个事务:

start  transaction;       //也可以写成:begin;

2,执行多条增删改语句;  //也就是相当于希望这多条语句要作为一个“不可分割”的整体去执行的任务

3,判断这些语句执行的结果情况,并进行提交或回滚:

if(  没有出错 ){

commit;       //提交事务;此时就是一次性完成;

}

else{

rollback;      //回滚事务;此时就是全部撤销;

}

具体分2种情况来做:

在cmd中,就是凭“肉眼”观察是否有错:

没有错误的情况:

有错误的情况:

在php中:

Mysql事务控制语言相关推荐

  1. 十八、MySQL之TCL事务控制语言(详解)

    TCL : Transaction Control Language 事务控制语言 零.MySQL 中的存储引擎 1.概念:在mysql中的数据用各种不同的技术存储在文件(或内存)中. 2.通过sho ...

  2. mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解

    一. 数据查询语言(DQL)(重中之重) 完整语法格式: select 表达式1|字段,.... [from 表名 where 条件] [group by 列名] [having 条件] [order ...

  3. 一、TCL事务控制语言 二、MySQL中的约束 三、多表查询(重点) 四、用户的创建和授权 五、MySQL中的索引...

    一.TCL事务控制语言 ###<1>事务的概念 事务是访问并可能更新数据库中各种数据项的执行单元. 事务是一条SQL语句,一组SQL语句,或者整个程序. 事务是恢复和并发控制的基本单位. ...

  4. mysql 事务 注意 优化_MySQL入门详解——事务、锁、优化

    MySQL事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生 ...

  5. mysql 事务 注意 优化_MySQL入门详解(二)---mysql事务、锁、以及优化

    MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生很大的问题.而事 ...

  6. TCL——事务控制语言

    一.事务控制语言(TCL)介绍 1.1 事务 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的.而整个单独单元作为一-个不可分割的整体,如果单元中某条SQL语句一 ...

  7. MySQL-7 DDL约束 标识列 TCL事务控制语言 视图view

    文章目录 DDL语言 常见约束 约束分类 添加约束的时机 创建表时添加约束 通用写法 修改表时添加约束 修改表时删除约束 主键和唯一的对比 外键约束 案例讲解常见约束 标识列 TCL事务控制语言 事务 ...

  8. MySQL_TCL事务控制语言_刘锋的博客

    文章目录 TCL事务控制语言 一.事务的属性(ACIB) 原子性 一致性 隔离性 持久性 二.事务的创建 隐式的事务 显式的事务 三.事务的隔离级别 脏读: 不可重复度: 幻读: 四.delete和t ...

  9. 辉仔日记之学代码第十八期——Mysql事务

    目录 一.事务的概念和特性 1.概念: 2.特性: 二.MySQL存储引擎 三.执行事务的语法和流程 1.事物的创建 2.注意事项 四.事务的隔离级别 1.事务并发问题是如何产生的? 2事务并发问题: ...

最新文章

  1. AI寒冬论作者:通用人工智能仍是白日梦
  2. java中String和char的区别
  3. 微软EPG老大发给员工的mail
  4. Web开发的那点事--业务层常用功能
  5. hdu 1848(Fibonacci again and again)(SG博弈)
  6. 甲流病人初筛(信息学奥赛一本通-T1399)
  7. spring boot 常用项目文件结构
  8. shell脚本和linux命令,Linux shell脚本全面学习(一)
  9. oracle修改用户的登录密码
  10. 裘宗燕:C/C++ 语言中的表达式求值
  11. 使用tomcat+eclipse搭建javaweb基础开发环境
  12. 无任何网络提供程序接受指定的网络路径
  13. python3-关于GitHub的最基本操作
  14. 会议审批 查询会议签字
  15. Vertica中的projections
  16. ​STM32家族介绍,覆盖STM32F、STM32H、STM32L全系列
  17. 2020研究生数学建模B题——汽油辛烷值优化——获奖论文思路分享
  18. 解决Serialized class ** must implement java.io.Serializable问题
  19. NumPy的矩阵表示方法
  20. srs可以用java开发吗,为SRS流媒体服务器添加HLS加密功能(附源码)

热门文章

  1. linux常用命令100个(转)
  2. python 线程锁_Python多线程-线程锁
  3. 师范生计算机期末考试题目,2015年深圳宝安区计算机教师招聘考试试题[师范生发布]无答案...
  4. html5游戏面试题,关于HTML5的十大面试题
  5. sqlyog怎么查找表_VBA代码解决方案第58讲:在VBA中查找指定工作表的实用方法
  6. Run-Time Check Failure #2 – Stack around the variable 'a' was corrupted.
  7. 利用WinSock进行无连接的通信
  8. 阿里云数据库再添新成员,企业级MariaDB正式开卖!
  9. 力拼5G,台湾拟释放出更多频谱
  10. mysql显示行号,通过表名模糊查找,通过列名模糊查找,常用sql