推荐一本书:《MySQL技术内幕:InnoDB存储引擎》

关于事务的概念和四个特性,看这篇教程吧:http://www.runoob.com/mysql/mysql-transaction.html

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 上面给出的链接中关于事务的实际使用说的不够清楚,下面开始详细说明:

一、开启事务处理的办法(两种)

1.临时显示地开启一次事务,commit(提交)或者rollback(回滚)后事务结束

begin;    # 开启事务 ,也可以用 start transaction;来开启事务,它和begin是等价的

rollback;  #  回滚,同义:rollback work;

commit;   #  提交,同义:commit work;

插句话:博客园平台的代码框是真的不好看,格式有时候会乱,表格也是如此,因此今后的代码都直接在文章里写,并将代码的颜色设置为蓝色。

2.开启MySQL的事务模式,今后的每一次操作都是事务,也就说commit或者rollback之后,MySQL又自动开启了下一个事务

set autocommit = 0;  # 禁止自动提交,开启事务模式

set autocommit = 1;  # 开启自动提交,关闭事务模式

在执行SQL语句之后,再查询表,发现表中的数据已经更新成功了,但实际上数据库中的数据并没有真正地改变。只有commit后数据库中的数据才会真的改变。

3.为事务添加保存点,保存点也就是一个状态

savepoint  one;  # 设置名称叫one的保存点

release savapoint one;   #  删除名字叫one的保存点

rollback to one;  # 回到名字叫one的保存点,注意回滚到某个保存点后当前事务并没有结束 

4.还有一个非常重要的语句:set transaction  # 设置隔离级别,这一部分等学完锁再回来补充。

实例1:开启事务-查询表(name=tom)-更新表(set name=hey)-查询表(name=hey)-回滚-查询表(name=tom)

MySQL的事务 随笔 第1张

实例2:开启事务-设置初始状态为保存点-插入数据-设置插入后的状态为一个保存点-回滚到第一个保存点

MySQL的事务 随笔 第2张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄