什么叫做事务?

现在先假设这样一个场景:

小明和小花是一对恋人;他们分处不同的城市;

某天,iphone7出来了,小花想要一个,但肾以用完,需要向小明借钱5000,于是小明开始向小花汇款:

不管小明通过什么途径(柜台,手机银行,atm机)汇款,都必然最终要执行如下2条语句:

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

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

然后,小明汇款按下“确定”的时候,服务器在执行完第一条语句时突然“断电”(或其他网线被老鼠咬断。。。)。。。。

于是,他们分手了。。。

这里,出现问题的核心关键所在就是:该两条语句(2个事情),从逻辑上是必须都同时完成,这样才能保证数据的“一致性”,而这里却没有做到这一点。

事务,就是用来保证,这种需要“同时完成”的事情,能够实现同时完成的这种内部机制。

“事务安全”,是一种数据库的功能,目前,mysql只有InnoDB和BDB引擎支持。

事务,只对数据的“增删改”可以进行控制——查询语句无所谓。

事务的特点

原子性:一个事务中的所有语句,应该做到:要么全做,要么一个都不做;

一致性:让数据保持逻辑上的“合理性”,比如:一个商品出库时,既要让商品库中的该商品数量减1,又要让对应用户的购物车中的该商品加1;

隔离性:如果多个事务同时并发执行,但每个事务就像各自独立执行一样。

持久性:一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。

MySQL中事务控制语句_Mysql事务控制语言相关推荐

  1. mysql中视图备份_MySQL 事务、视图、索引、备份和恢复

    事务 为什么需要事务: 转账.总量不变,但其他值进行变化. 事务是什么: 作为单个逻辑工作单元执行的一系列操作. 多个操作作为一个整体向系统提交,要么执行/不执行. 事务是一个不可分割的工作逻辑单元. ...

  2. MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别

    1. 事务概念 事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的 MySQL 操作要么完全执行,要么完全不执行. 下面是关于事务处理需要知道的几个术语: ...

  3. mysql中语句块当事务,Mysql 存储过程的学习笔记

    技术要点 一个存储过程包括名字.参数列表,以及可以包括很多SQL语句的SQL语句集.下面为一个存储过程的定义过程: create procedure proc_name (in parameter i ...

  4. mysql事务概念_MySQL事务的概念

    应用场景 生活中,我们往往经常会进行转账操作,转账操作可以分为两部分来完成,转入和转出.只有这两部分都完成了才可以认为是转账成功. 数据库中,这个过程是使用两条语句来完成的,如果其中任意一条语句出现了 ...

  5. mysql事务服务_MySQL (事务篇)

    1.事务内,存在两条sql语句,第一条执行成功了,第二条执行失败了,commit之后,什么结果? 结果:第一条执行成功,第二条执行失败,不进行回滚 注意:MySQL 中的回滚,必须人为去做,在PHP ...

  6. mysql事务实战_mysql事务隔离级别详解和实战

    A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据 但是 在A事务中查询的话 查到的都是操作之后的数据 没有提交的数据只有自己看得到,并没有update到数据库. 查看InnoD ...

  7. mysql与缓存脏读_MySQL 事务的隔离级别问题 之 脏读

    1. 脏读 所谓的脏读就是指一个事务读取了另一个事务未提取的数据. 试想一下:a账户要给b账户100元购买商品,如果a账户开启一个事务,执行下面的update语句做了如下转账的工作: update a ...

  8. mysql spring隔离级别_MySQL事务与Spring隔离级别实现

    1.事务具有ACID特性 原子性(atomicity):一个事务被事务不可分割的最小工作单元,要么全部提交,要么全部失败回滚. 一致性(consistency):数据库总是从一致性状态到另一个一致性状 ...

  9. mysql事务嵌套 php_使用以下代码,MySQL中的PHP“嵌套”事务是否...

    好的,我正在寻找使用PHP在MySQL中进行"嵌套"事务的解决方案,并且正如您在MySQL文档中所知的那样,不可能在事务内进行事务(Mysql transactions withi ...

最新文章

  1. 手机影音第六天 自定义播放器页面的实现(按钮暂时未监听)
  2. C语言用户标准是什么,C语言系统用户标准管理系统.doc
  3. yaml 文件格式简介
  4. vc调用mysql数据库操作例子
  5. C++程序内存分配方式(堆与栈)
  6. IDEA项目搭建四——使用Mybatis实现Dao层
  7. 四川高职计算机二本线学校,全网首发!四川省本科二批次2019年对口高职投档录取线出炉...
  8. 怎样使用Pycharm(Python工具)新建项目及创建Python文件
  9. LVS/NAT的配置和应用
  10. L3-014 周游世界 (30分)
  11. mybatis操作mysql的奇淫技巧总结(代码库)
  12. android微信朋友圈相册背景,Android 仿微信朋友圈图片拖拽返回
  13. Windows10自带应用的卸载和恢复
  14. GTD时间管理简洁做法
  15. XCode 报错Thread 2:signal SIGABRT
  16. HIVE中纵表转横表
  17. 交互媒体专题设计------《The Wiley Handbook of Human Computer Interaction》
  18. 力扣中国(LeetCode) 算法题 有效独数(python)
  19. 唯品会定时任务组件Saturn的时间不一致bug,超时
  20. 笑傲江湖之精忠报国,终于做完了

热门文章

  1. spark eventLoop模型
  2. akka一些邮箱的实现
  3. light task schedule的定时任务实现源码解析
  4. Go 每日一库之 zap
  5. 为什么要使用 Node.js
  6. Docker常见问题总结
  7. 面试被问 Go 的map[int64]int64 在 redis 会占多少空间...
  8. 当连接一个 IP 不存在的主机时,TCP握手过程是怎样的?
  9. Go Web编程--使用Go语言创建静态文件服务器
  10. 企业级 SpringBoot 教程 (二)Spring Boot配置文件详解