事务

1.什么是事务

要么都成功,要么都失败

SQL执行, A 给 B 转账A 1000 ——》200B200

SQL执行, B 收到 A 的钱 A 800 ——》B400

核心:将一组SQL放在一个批次中去执行~

事务原则:ACID原则 原子性,一致性,隔离性,持久性(脏读,幻读)

原子性(Atomicity):两个步骤一起成功一起失败(-200和+200必须同时发生)

一致性(Consistency):针对一个事务操作前和操作后的状态一致,最终一致性。(最后总共是1800,操作前后都不会发生变化)

持久性(Durability):事务结束后的数据不随着外界原因导致数据丢失。(事务没有提交,恢复原状。事务已经提交,持久化到数据库)

隔离性(Isolation):多个用户同时操作,排除其他事务对本次事务的影响

2.事务的隔离级别

脏读:指一个事务读取了另一个事务未提交的数据

不可重复读:在第一个事务内读取表中的某一行数据,多次读取结果不同。(不一定是错误,可能是场合不对)

幻读:指在一个事务内读取了别的事务的插入的数据,导致前后读取不一致

-- mysql 是默认开启事务自动提交的

SET autocommit = 0 /*关闭*/

SET autocommit = 1 /*开启(默认开启)*/

-- 手动处理事务

SET autocommit = 0 /*关闭*/

-- 事务开启

START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务内

INSERT xx

INSERT xx

-- 提交:持久化(成功)

COMMIT

-- 回滚:回到原来的样字(失败)

ROLLBACK

-- 事务结束

SET autocommit = 1 /*开启*/

-- 了解

SAVEPOINT 保存点名 -- 设置一个事务的保存点

ROLLBACK TO SAVEPOINT 保存点名 -- 回滚到保持存点

RELEASE SAVEPOINT 保存点名 -- 撤销保存点

模拟场景

-- 转账

CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci

USER shop

CREATE TABLE `account`(

`id` INT(9) NOT NULL AUTO_INCREMENT,

`name`VARCHAR(30) NOT NULL,

`money` DECIMAL(9,2) NOT NULL,

PRIMARY KEY(`id`)

)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO account(`name`,`money`)

VALUES('A',2000.00),('B',10000.00)

-- 模拟转账:事务

SET autocommit = 0; -- 关闭自动提交

START TRANSACTION -- 开启一个事物

UPDATE account SET money = money - 500 WHERE `name`='A' -- A减500

UPDATE account SET money = money + 500 WHERE `name`='B' -- B加500

COMMIT; -- 提交事务

ROLLBACK; -- 回滚

SET autocommit =1; -- 恢复默认值

mysql事务内_MySQL事务相关推荐

  1. mysql show 原理_mysql事务的实现原理

    此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中  有一个整体的认识,如下图 如上图所示, ...

  2. mysql事务并发控制_mysql事务和多版本并发控制详解

    一.mysql事务 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎可以成功执行该组全部语句,那么就执行该组语句.如果其中有任何一条语句不能执行,那么所有的语句都不会执行.也就 ...

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

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

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

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

  5. mysql+nest+嵌套事务_MySQL——事务

    事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致状态转换为另一种一致状态. 关键词事务四大特性ACID MySql事务隔离级别 MVCC多版本并发控制实现方 ...

  6. mysql当时读_Mysql事务以及四中隔离级别实例2以及InnoDB如何解决当时读的幻读问题...

    接着上一篇笔记:http://blog.csdn.net/qq_33366229/article/details/78337354 第三级别(重复读): 第二种情况: 也就是基于上一种情况 事务A在事 ...

  7. mysql 并发性_MySQL 事务

    1.什么是事务,为什么需要事务 事务(Transaction)是数据库并发控制的不可分割的基本单位,可以将一系列的数据库操作集合到一个事务中,从总体上来讲这个事务可能会对数据库进行一些变动.事务存在的 ...

  8. mysql 开启事物_mysql事务的开启

    mysql事务的开启 对于一个MYSQL数据库(InnoDB),事务的开启与提交模式无非下面这两种情况: 1>若参数autocommit=0,事务则在用户本次对数据进行操作时自动开启,在用户执行 ...

  9. mysql ib_logfile 数量_Mysql 事务日志(Ib_logfile)

    mysql的innodb中事务日志ib_logfile(0/1) 概念: 事务日志或称redo日志,在mysql中默认以ib_logfile0,ib_logfile1名称存在,可以手工修改参数,调节开 ...

最新文章

  1. 2021年大数据Hive(七):Hive的开窗函数
  2. SAP 零售行业相关的博客
  3. UVa11100 The Trip,2007(贪心)
  4. 英语分词组_考生必看!成人高考英语大牛教你如何轻松考高分
  5. Property ngOnInit does not exist on type VisibleFocusDirective
  6. 软件系统兼容性设计_港口大型设备状态评估及管理信息系统的设计
  7. Html TextArea 长度限制
  8. UISearchController使用方法及注意事项
  9. Tapestry5 事件处理函数返回结果处理策略
  10. 大学生游戏静态HTML网页作业--美丽中国
  11. Web大学生网页作业成品~美食餐饮网站设计与实现(HTML+CSS+JavaScript)
  12. FAT32文件系统介绍
  13. redis通过key模糊搜索_Redis中关于Key的模糊查找
  14. 读取txt文件(字符串内容),分割数组,存入Map
  15. linux马达驱动程序,一种Linux系统的微型针式打印机及其驱动方法与流程
  16. 2022腾讯实习生移动客户端开发一面(IEG)
  17. 编写简单的六轴机械臂
  18. shell 脚本与常用的bash命令
  19. mac文件夹怎么重命名?苹果电脑文件夹重命名快捷键
  20. 【狼窝乀野狼】Excel那些事儿

热门文章

  1. HTML 超详细空格标记
  2. Python 类属性和类方法、单例、异常
  3. Origin Pro 8.5设置文本框居中显示
  4. e语言mysql怎么放在超级列表框_易语言中的MYSQL操作之超级列表框使用
  5. 网银U盾潜在安全漏洞之忧
  6. 附PPT下载 | 企业数据价值现状及数据分析师的价值提升
  7. 丁达尔效应产生的原因_丁达尔效应产生的原因是什么
  8. DOM替换replaceWith()和replaceAll() 之前学习了节点的内插入、外插入以及删除方法,这节会学习替换方法replaceWith .replaceWith( newConten
  9. Cable Modem工作原理
  10. CAutoupdater通用自动升级组件