MySQL事务部分回滚-回滚到指定保存点
我们可以在mysql事务处理过程中定义保存点(SAVEPOINT),然后回滚到指定的保存点前的状态。
定义保存点,以及回滚到指定保存点前状态的语法如下。
- 定义保存点---SAVEPOINT 保存点名;
- 回滚到指定保存点---ROLLBACK TO SAVEPOINT 保存点名:
下面演示将向表user中连续插入3条数据,在插入第2条数据的后面定义一个保存点,最后看看能否回滚到此保存点。
1、查看user表中的数据
- mysql> select * from user;
- +-----+----------+-----+------+
- | mid | name | scx | word |
- +-----+----------+-----+------+
- | 1 | zhangsan | 0 | NULL |
- | 2 | wangwu | 1 | NULL |
- +-----+----------+-----+------+
- 2 rows in set (0.05 sec)
2、mysql事务开始
- mysql> BEGIN;
- Query OK, 0 rows affected (0.00 sec)
3、向表user中插入2条数据
- mysql> INSERT INTO user VALUES ('3','one','0','');
- Query OK, 1 row affected (0.08 sec)
- mysql> INSERT INTO user VALUES ('4,'two','0','');
- Query OK, 1 row affected (0.00 sec)
- mysql> select * from user;
- +-----+----------+-----+------+
- | mid | name | scx | word |
- +-----+----------+-----+------+
- | 1 | zhangsan | 0 | NULL |
- | 2 | wangwu | 1 | NULL |
- | 3 | one | 0 | |
- | 4 | two | 0 | |
- +-----+----------+-----+------+
- 4 rows in set (0.00 sec)
4、指定保存点,保存点名为test
- mysql> SAVEPOINT test;
- Query OK, 0 rows affected (0.00 sec)
5、向表user中插入第3条数据
- mysql> INSERT INTO user VALUES ('5','three','0','');
- Query OK, 1 row affected (0.00 sec)
- mysql> select * from user;
- +-----+----------+-----+------+
- | mid | name | scx | word |
- +-----+----------+-----+------+
- | 1 | zhangsan | 0 | NULL |
- | 2 | wangwu | 1 | NULL |
- | 3 | one | 0 | |
- | 4 | two | 0 | |
- | 5 | three | 0 | |
- +-----+----------+-----+------+
- 5 rows in set (0.02 sec)
6、回滚到保存点test
- mysql> ROLLBACK TO SAVEPOINT test;
- Query OK, 0 rows affected (0.31 sec)
- mysql> select * from user;
- +-----+----------+-----+------+
- | mid | name | scx | word |
- +-----+----------+-----+------+
- | 1 | zhangsan | 0 | NULL |
- | 2 | wangwu | 1 | NULL |
- | 3 | one | 0 | |
- | 4 | two | 0 | |
- +-----+----------+-----+------+
- 4 rows in set (0.00 sec)
我们可以看到保存点test以后插入的记录没有显示了,即成功团滚到了定义保存点test前的状态。利用保存点可以实现只提交事务中部分处理的功能。
MySQL事务部分回滚-回滚到指定保存点的更多相关文章
- OS X环境下SVN回滚工程到指定版本,回滚指定文件到指定版本
1.打开命令行终端 2.cd + 工程或文件目录 3.svn update 工程目录或文件目录 -r 版本号 在Xcode中选中文件,右键选择''show in finder''(也可以用快捷键,不过 ...
- php+mysql实现事务回滚
模拟条件:第一个表插入成功,但是第二个表插入失败,回滚.第一个表插入成功,第二个表插入成功,执行.第一个表插入失败,第二个表插入成功,回滚.第一个表插入失败,第二个表插入失败,回滚.以上情况都需要回滚 ...
- mysql有回滚,php没有回滚的说法
mysql 事务表是有回滚的说法.当发生mysql层面的错误才会执行回滚
- spring 事务回滚
1.遇到的问题 当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误.伪代码如下: public method() { Dao1.save(Person1); Dao1.save( ...
- spring管理事务回滚
spring 事务回滚 1.遇到的问题 当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误.伪代码如下: ? 1 2 3 4 5 6 7 public method() { ...
- k8s-控制器deployment弹性扩容,更新镜像,回滚,DaemonSet,StatufluSet
目录 1.控制器deployment,DaemonSet,StatufluSet 2.控制器-deployment 弹性扩容 方式1-修改配置清单 方式2-打标签 方式3-scale 更新镜像 方式1 ...
- 6.Git代码回滚
1.代码修改并提交 我们已经成功地添加并提交了一个helloWorld.txt文件,现在,是时候继续工作了. 于是,我们继续修改helloWorld.txt文件,改成如下内容: $ vi helloW ...
- Oracle回滚段的概念,用法和规划及问题的解决
回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值).回滚段的头部包含正在使用的该回滚段事务的信息.一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回 ...
- [Oracle]关于回滚段的一些转贴摘录
ORACLE 回滚段 回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值).回滚段的头部包含正在使用的该回滚段事务的信息.一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段 ...
随机推荐
- Objective-C 知识点拾遗
-- :: UIWebView的使用总结 UIWebView全解
- 【等待事件】等待事件系列(3+4)--System IO(控制文件)+日志类等待
[等待事件]等待事件系列(3+4)--System IO(控制文件)+日志类等待 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可 ...
- vue v-for中的item改变无法引起视图的更新
写过angularjs的同学知道,如果ng-repeat中的item绑定到对应的model,item改变是会引起视图的更新的,但是vue中不起作用,具体的解决办法: 在vue脚手架中,首先引入vue ...
- 【转】移植vsftpd到arm linux
vsftpd即very secure FTP daemon(非常安全的FTP进程),是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux.BSD. ...
- Linux命令——mknode
参考:What is the mknod command used for? 前言 Linux下面,一切皆文件,当然也包括设备.Linux通过major.minor号来区分不同设备,如下图
- HashMap不足性分析
不足性: 1.缺陷就在于其高度依赖hash算法,如果key是自定义类,你得自己重写hashcode方法,写hash算法. 而且hashmap要求,存入时的hashcode什么样,之后就不能在变更,如果 ...
- Centos7-ssh免密登录
生成密钥 ssh-keygen 拷贝密钥 ssh-copy-id #目的IP或域名 检查配置 cat /root/.ssh/authorized_keys 登录测试 ssh ip
- Java——CaptchaUtil生成二维码乱码
前言 这个问题就是因为Linux上没有字体,你可以有两种方法,一个在生成的时候设置字体,一个就是安装字体. 默认的字体为Courier 乱码情况 步骤 安装字体工具 yum install -y fo ...
- php导出表格两种方法 ——PhpExcel的列子
php常用的导出表格有两种方法,第一种是输出表格,这种方法打开的时候有警告提示,一般导出表格会用phpexcel,这个导出比较灵活,而且还可以设置表格的样式. 第一种导出例子 /** * 执行导出 * ...
- mongodb 简单使用说明
首先安装 mongodb软件地址 https://www.mongodb.org/downloads#production: 然后在 mongodb安装目录下找到bin 文件夹进去 在它的位置上按下 ...