MySQL的事务

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

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


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

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

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

setcuto

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)

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

原文地址:https://www.cnblogs.com/2sheep2simple/p/10745256.html