mysql回滚部分记录_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回滚部分记录_MySQL事务部分回滚-回滚到指定保存点相关推荐
- mysql查找并删除记录_mysql 子查询删除记录
mysql 子查询删除记录 mysql 可以通过子查询得到要删除的记录条件,然后通过子查询得结果匹配要删除的记录.但是 mysql 不能直接删除子查询表中的数据,必须通过一个临时表来解决.例如: de ...
- mysql重做日志恢复数据_MySQL中重做日志,回滚日志,以及二进制日志的简单总结...
MySQL中有六种日志文件, 分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log). ...
- MySQL 死锁套路:三个事务插入有一个回滚
这个是非常经典的一个场景,在网上搜索插入意向锁造成的死锁,绝大部分都会指向这个例子 (想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程.完全免费哦!) 表结构 CREATE ...
- mysql行级锁作用_Mysql事务及行级锁的理解
在最近的开发中,碰到一个需求签到,每个用户每天只能签到一次,那么怎么去判断某个用户当天是否签到呢?因为当属表设计的时候,每个用户签到一次,即向表中插入一条记录,根据记录的数量和时间来判断用户当天是否签 ...
- mysql如何进行视图恢复_mysql事务 视图 索引 备份和恢复
事务 1.事务: 概念:是作为单个逻辑工作单元执行的一系列操作 多个操作作为一个整体向系统提交,要么都执行,要么都不执行 事务是一个不可分割的工作逻辑单元 默认情况下 , 每条单独的SQL语句视为一个 ...
- mysql 回表 覆盖索引_MySQL 的覆盖索引与回表的使用方法
两大类索引 使用的存储引擎:MySQL5.7 InnoDB 聚簇索引 * 如果表设置了主键,则主键就是聚簇索引 * 如果表没有主键,则会默认第一个NOT NULL,且唯一(UNIQUE)的列作为聚簇索 ...
- 删除logs mysql_关于删除MySQL Logs的问题记录_MySQL
五一前,一个DBA同事反馈,在日常环境中删除一个大的slow log文件(假设文件大小10G以上吧),然后在MySQL中执行flush slow logs,会发现mysqld hang住. 今天尝试着 ...
- linux中mysql数据库启用日志记录_MYSQL启用日志,和查看日志
mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-update 二进制 ...
- mysql 设置事物自动提交_mysql事务自动提交的问题
1:mysql的aut0commit配置默认是开启的,也就是没执行一条sql都会提交一次,就算显示的开启事务也会导致多条SQL不在一个事务中, 如果需要相关的SQL在同一个事务中执行,那么必须将aut ...
最新文章
- php xml 动态添加数据,php向xml中添加数据一例
- .Net Framework 各个版本新特性总结 (一)
- 一些java面试高频题
- .NET Core 的Generic Host 之Generic Host Builder
- trunk配置功能详解
- 05-02 docker 安装与配置-CentOS
- 后退与hash的问题
- dll文件编辑器(Resource Hacker)下载
- gg 修改器游戏被保护_2.游戏so防封的制作思路
- 跨界融合,共创智能汽车研发新生态(技术大会诚邀您的莅临)
- Vue 获取当前日期
- python使用moviepy对视频提取音频和增加音频
- 蒙特卡罗树搜索法c语言,蒙特卡罗方法的计算方法
- ChatGPT大封号,注册功能关闭!亚洲成重灾区,网友喊话:不要登录,不要登录...
- 硕士论文查重流程是什么?
- 天融信虚拟企业防火墙学习
- java银行驻场开发,满满干货指导
- 乐视 无法播放服务器文件夹,乐视电视最新常见问题及解决方法分享!
- 佛山市“可持续城市出行规划(SUMP)”国家层面培训会顺利完成
- 华工计算机组成原理试卷,华工 2014计算机组成原理 作业答案
热门文章
- Spring框架----Spring框架的基本概念
- Jumpserver跳板机
- 【piu~】制作一只变形小鸡~
- Nginx服务器的开发团队
- oracle querytimeout,聊聊pg jdbc的queryTimeout及next方法
- fc588热敏打印机驱动_为称重仪表设计热敏打印模块 - 工业自动化称重仪表
- reactrouter4路由钩子_react router @4 和 vue路由 详解(八)vue路由守卫
- 设计灵感|引导页设计中如何借助图形来展现场景?
- 优秀的电商精品素材就到优图
- 圣诞节插画素材|设计师再忙也要看一看,没准可以帮助到你!