我们可以在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回滚部分记录_MySQL事务部分回滚-回滚到指定保存点相关推荐

  1. mysql查找并删除记录_mysql 子查询删除记录

    mysql 子查询删除记录 mysql 可以通过子查询得到要删除的记录条件,然后通过子查询得结果匹配要删除的记录.但是 mysql 不能直接删除子查询表中的数据,必须通过一个临时表来解决.例如: de ...

  2. mysql重做日志恢复数据_MySQL中重做日志,回滚日志,以及二进制日志的简单总结...

    MySQL中有六种日志文件, 分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log). ...

  3. MySQL 死锁套路:三个事务插入有一个回滚

    这个是非常经典的一个场景,在网上搜索插入意向锁造成的死锁,绝大部分都会指向这个例子 (想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程.完全免费哦!) 表结构 CREATE ...

  4. mysql行级锁作用_Mysql事务及行级锁的理解

    在最近的开发中,碰到一个需求签到,每个用户每天只能签到一次,那么怎么去判断某个用户当天是否签到呢?因为当属表设计的时候,每个用户签到一次,即向表中插入一条记录,根据记录的数量和时间来判断用户当天是否签 ...

  5. mysql如何进行视图恢复_mysql事务 视图 索引 备份和恢复

    事务 1.事务: 概念:是作为单个逻辑工作单元执行的一系列操作 多个操作作为一个整体向系统提交,要么都执行,要么都不执行 事务是一个不可分割的工作逻辑单元 默认情况下 , 每条单独的SQL语句视为一个 ...

  6. mysql 回表 覆盖索引_MySQL 的覆盖索引与回表的使用方法

    两大类索引 使用的存储引擎:MySQL5.7 InnoDB 聚簇索引 * 如果表设置了主键,则主键就是聚簇索引 * 如果表没有主键,则会默认第一个NOT NULL,且唯一(UNIQUE)的列作为聚簇索 ...

  7. 删除logs mysql_关于删除MySQL Logs的问题记录_MySQL

    五一前,一个DBA同事反馈,在日常环境中删除一个大的slow log文件(假设文件大小10G以上吧),然后在MySQL中执行flush slow logs,会发现mysqld hang住. 今天尝试着 ...

  8. linux中mysql数据库启用日志记录_MYSQL启用日志,和查看日志

    mysql有以下几种日志: 错误日志:     -log-err 查询日志:     -log 慢查询日志:   -log-slow-queries 更新日志:     -log-update 二进制 ...

  9. mysql 设置事物自动提交_mysql事务自动提交的问题

    1:mysql的aut0commit配置默认是开启的,也就是没执行一条sql都会提交一次,就算显示的开启事务也会导致多条SQL不在一个事务中, 如果需要相关的SQL在同一个事务中执行,那么必须将aut ...

最新文章

  1. php xml 动态添加数据,php向xml中添加数据一例
  2. .Net Framework 各个版本新特性总结 (一)
  3. 一些java面试高频题
  4. .NET Core 的Generic Host 之Generic Host Builder
  5. trunk配置功能详解
  6. 05-02 docker 安装与配置-CentOS
  7. 后退与hash的问题
  8. dll文件编辑器(Resource Hacker)下载
  9. gg 修改器游戏被保护_2.游戏so防封的制作思路
  10. 跨界融合,共创智能汽车研发新生态(技术大会诚邀您的莅临)
  11. Vue 获取当前日期
  12. python使用moviepy对视频提取音频和增加音频
  13. 蒙特卡罗树搜索法c语言,蒙特卡罗方法的计算方法
  14. ChatGPT大封号,注册功能关闭!亚洲成重灾区,网友喊话:不要登录,不要登录...
  15. 硕士论文查重流程是什么?
  16. 天融信虚拟企业防火墙学习
  17. java银行驻场开发,满满干货指导
  18. 乐视 无法播放服务器文件夹,乐视电视最新常见问题及解决方法分享!
  19. 佛山市“可持续城市出行规划(SUMP)”国家层面培训会顺利完成
  20. 华工计算机组成原理试卷,华工 2014计算机组成原理 作业答案

热门文章

  1. Spring框架----Spring框架的基本概念
  2. Jumpserver跳板机
  3. 【piu~】制作一只变形小鸡~
  4. Nginx服务器的开发团队
  5. oracle querytimeout,聊聊pg jdbc的queryTimeout及next方法
  6. fc588热敏打印机驱动_为称重仪表设计热敏打印模块 - 工业自动化称重仪表
  7. reactrouter4路由钩子_react router @4 和 vue路由 详解(八)vue路由守卫
  8. 设计灵感|引导页设计中如何借助图形来展现场景?
  9. 优秀的电商精品素材就到优图
  10. 圣诞节插画素材|设计师再忙也要看一看,没准可以帮助到你!