MySQL的savepoint简介及实例

 更新时间:2023年08月23日 09:54:28   作者:一户董  
MySQL中的保存点Savepoint是一个用于控制事务的重要工具,本文主要介绍了MySQL的savepoint简介及实例,具有一定的参考价值,感兴趣的可以了解一下

写在前面

本文看下MySQL的savepoint相关内容。

1:什么是savepoint

savepoint是事务中一个概念,允许在事务执行的过程中暂存事务执行到当前所产生的修改,这样当我们需要回滚事务时就可以选择回滚到某个保存点,而不用回滚整个事务。语法格式如下:

生成一个savepoint:
    SAVEPOINT the_savepoint_name
回滚事务到某个savepoint:
    ROLLBACK [WORK] TO [SAVEPOINT] the_savepoint_name
释放暂存点:
	RELEASE SAVEPOINT the_savepoint_name

2:实例

如下表:

mysql> select * from words where id in (1,2);
+----+------+
| id | word |
+----+------+
|  1 | aaaa |
|  2 | aaab |
+----+------+
2 rows in set (0.00 sec)

接下来我们分别对id为1,2的word都拼加字符串hi,并分别生成保存点,最终回滚到id为1的修改保存点,并提交事务,因此最终只有id=1的word会追加hi成功,操作如下:

mysql> start transaction with consistent snapshot;
Query OK, 0 rows affected (0.00 sec)
mysql> update words set word=concat(word,'hi') where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> savepoint sp_id_1; // 生成第一个暂存点
Query OK, 0 rows affected (0.00 sec)
mysql> update words set word=concat(word,'hi') where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> savepoint sp_id_2; // 生成第二个暂存点
Query OK, 0 rows affected (0.00 sec)
mysql> rollback to savepoint sp_id_1; // 回滚到第一个暂存点,则第一个暂存点之后的所有修改都会被回滚,但第一个暂存点之前的修改回被保留
Query OK, 0 rows affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.06 sec)
mysql> select * from words where id in (1,2); 
+----+--------+
| id | word   |
+----+--------+
|  1 | aaaahi |
|  2 | aaab   |
+----+--------+
2 rows in set (0.00 sec)

可以看到最终只要id=1的word值成功追加了hi

写在后面

参考文章列表

MySQL 基础 ———— SAVEPOINT 的应用 。

到此这篇关于MySQL的savepoint简介及实例的文章就介绍到这了,更多相关MySQL savepoint内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySql各种查询方式详解

    MySql各种查询方式详解

    如果是做数据分析,MySQL里面最重要、最常用的就是数据查询,数据查询不只是简单查询数据库中存储的数据,还要根据需求对数据进行筛选、聚合,以及确定数据以什么样的格式进行显示。MySQL提供了强大、灵活的语句和函数来实现查询的操作
    2022-07-07
  • Windows server 2008 r2上安装MySQL5.7.10步骤

    Windows server 2008 r2上安装MySQL5.7.10步骤

    这篇文章主要介绍了Windows server 2008 r2上安装MySQL5.7.10的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Mysql的基础使用之MariaDB安装方法详解

    Mysql的基础使用之MariaDB安装方法详解

    这篇文章主要介绍了Mysql的基础使用之MariaDB安装的相关资料,需要的朋友可以参考下
    2016-09-09
  • Can’t open file:''[Table]mytable.MYI''

    Can’t open file:''[Table]mytable.MYI''

    也许很多人遇到过类似Can’t open file: ‘[Table]mytable.MYI’ 这样的错误信息,却不知道怎么解决他,下面我们做个介绍,
    2011-01-01
  • MySQL查看所有用户的实现

    MySQL查看所有用户的实现

    本文主要介绍了MySQL查看所有用户的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • MySQL 如何限制一张表的记录数

    MySQL 如何限制一张表的记录数

    能否控制单表在一个固定的记录数,比如说1W条,超过不让插入新记录或者说直接抛出错误?关于这个问题,没有一个简化的答案,比如执行一条命令或者说简单设置一个参数都不能完美解决。接下来便介绍MySQL 如何限制一张表的记录数来给出一些可选解决方案
    2021-09-09
  • MySQL查看和修改字符编码的实现方法

    MySQL查看和修改字符编码的实现方法

    下面小编就为大家带来一篇MySQL查看和修改字符编码的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • mysql自增ID起始值修改方法

    mysql自增ID起始值修改方法

    本文介绍mysql自增ID的起始值修改与设置方法
    2013-11-11
  • jdbc调用mysql存储过程实现代码

    jdbc调用mysql存储过程实现代码

    接下来将介绍下mysql存储过程的创建及调用,调用时涉及到jdbc的知识,不熟悉的朋友还要温习下jdbc哦,话不多说看代码,希望可以帮助到你
    2013-03-03
  • mysql触发器trigger实例详解

    mysql触发器trigger实例详解

    MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧,需要的朋友可以参考下
    2021-03-03

最新评论