首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL事务部分回滚-回滚到指定保存「建议收藏」

我们可以在mysql事务处理过程定义保存(SAVEPOINT),然后回滚到指定的保存前的状态。 定义保存,以及回滚到指定保存前状态的语法如下。...定义保存—SAVEPOINT 保存点名; 回滚到指定保存—ROLLBACK TO SAVEPOINT 保存点名: 下面演示将向表user连续插入3条数据,在插入第2条数据的后面定义一个保存,最后看看能否回滚到此保存...事务开始 mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) 3、向表user插入2条数据 mysql> INSERT INTO user VALUES...,保存点名为test mysql> SAVEPOINT test; Query OK, 0 rows affected (0.00 sec) 5、向表user插入第3条数据 mysql> INSERT...利用保存可以实现只提交事务中部分处理的功能。

2K30

JDBC事务保存 JDBC简介(七)

在默认情况下,MySQL每执行一条SQL语句,都是一个单独的事务 如果需要将多条SQL语句设在在同一个事务,那么需要开启事务和结束事务 JDBC事务有关的方法 Connection与事务有关的主要方法...有的时候可能并不需要将一整个事务进行回滚,一个复杂的事务可能由几个一致性的阶段组成 保存就是在一个事务,插入几个还原点,再出现问题时,可以及时的撤回到这个地方来 当撤回到一个还原点时,事务还在,仍在进行...执行了两次删除,删除id=158时,创建保存savepoint1;删除id=159时,创建保存savepoint2 将事务回滚到保存1 conn.rollback(savepoint1);,然后进行提及...保存就是这样将一整个完整的过程进行了拆分,rollback到哪个保存,哪个保存以下就会回滚,之前的就会提交 一定要注意: conn.rollback(savepoint1); 并不会结束事务,只有...原文地址:JDBC事务保存 JDBC简介(七)

62720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL事务知识盘点

    持久性:是指在一个事务提交后,这个事务的状态会被持久化到数据库,也就是事务提交,对数据的新增、更新将会持久化到数据库。...3、MySQL 执行事务 事务的执行过程如下,以 begin 或者 start transaction 开始,然后执行一系列操作,最后要执行 commit 操作,事务才算结束。...要说明的是,当你在 MySQL 测试幻读的时候,并不会出现上图的结果,幻读并没有发生,MySQL 的可重复读隔离级别其实解决了幻读问题 6、串行化 串行化是4种事务隔离级别中隔离效果最好的,解决了脏读...而下面这条语句 update user set age=11 where age=10 表并没有为 age 字段设置索引,所以, MySQL 无法直接定位到这行数据。那怎么办呢,当然也不是加表锁了。...3、解决幻读 上面介绍可重复读的时候,那张图里标示着出现幻读的地方实际上在 MySQL 并不会出现,MySQL 已经在可重复读隔离级别下解决了幻读的问题。

    31820

    MySQL 事务详解

    4、mysql事务的创建与存在周期 5、mysql行为 6、事务的孤立性和性能 7、mysql的伪事务 一、事务的概念    事务由单独单元的一个或多个SQL语句组成,在这个单元,每个...二、MySQL 的存储引擎以及支持事务,和不支持事务的存储引擎    1、存储引擎的概念:在mysql的数据用各种不同的技术存储在文件(或内存)。...我们在使用mysql是如果关闭之后,打开在查询的话就会发现,哪些数据已经保存了,但是我们知道,在这过程没有进行显示或隐式提交,问什么会这样那?...七、伪事务(锁定) 1、在MySQL根据不同的需求,提供了很多存储引擎,但是有的存储引擎不支持事务,对于这种情况,可以使用表锁定来代替事务。...2、对于不支持事务的存储引擎MYISAM类型数据表,当用户插入,修改,删除时,这些操作都会立即保存到磁盘,当多用户同时操作某个表时,可以使用表锁定来避免同一时间有多个用户对数据库中指定表进行操作,这样可以避免在用户操作数据表过程受到干扰

    1K10

    MySQL 外部XA事务怎么安全恢复?

    MySQL的XA事务 分布式事务允许多个独立的事务资源参与到一个全局的事务,全局事务要求所有参与的事务要么都提交,要么都不提交。...(TM):为事务分配唯一标识符,监视其进度,并负责事务的提交,回滚和故障恢复 MySQL的XA事务MySQL是资源管理器,事务管理器是连接MySQL的客户端。...MySQL-8.0.30以前,崩溃恢复的时候MySQL对InnoDB处于prepared状态的外部XA事务统一不做处理,因此外部XA事务不保证crash safe(即,binlog和InnoDB事务可能出现不一致...xid 崩溃恢复过程,根据binlog记录的xid来决定是回滚还是保留InnoDB处于prepared状态的外部XA事务 MySQL社区在8.0.30解决了这个问题,相关提交参考:https:/...扫描完成后,将刚刚保存的外部XA事务的xid以及对应的状态传入InnoDB。 InnoDB根据传入的XA事务的状态以及InnoDB内部事务的undo状态修改或设置某些事务的状态。

    1.6K20

    MySQL怎么实现事务隔离的?

    该案例事务C没有显式使用begin/commit,表示该update语句本身就是个事务,语句完成时会自动提交 事务B在更新了行之后,查询 事务A在一个只读事务查询,并且时间上是在事务B的查询后...若是该事务自己更新的数据,它自己还是要认的。 视图数组 InnoDB为每个事务构造了一个数组,以保存事务启动瞬间,当前正“活跃”(启动了,但尚未提交)的所有事务ID。...若 row trx_id在数组,表示该版本是由尚未提交的事务生成的,不可见 b....t where id=1 for update; 假设事务C不是马上提交的,而是变成了下面的事务C’,会怎么样呢?...那事务B的更新语句会怎么处理呢? “两阶段锁协议”。事务C’没提交,即(1,2)这个版本上的写锁还没释放。

    1K30

    MySQL并发事务怎么处理的?

    MySQL同样需要解决并发事务带来的复杂问题,上文简单介绍了MySQL通过事务隔离机制可以解决并发问题,本文将结合案例进行深入剖析,以便掌握其原理并学习其思想。...如果不排队等待,又怎么保证读事务的数据是最新状态(一致性)?各隔离级别如何处理并发事务?到这里应该就看明白了。...结合事务隔离级别,看一下MySQL怎么处理的:不处理第一个情形不就是“读未提交”的“脏读”,一致性保证不了一。使用锁第二个情形就是“串行化”,完全通过锁来处理并发事务。...MVCC 全称 Multi-Version Concurrency Control(多版本并发控制),在数据库管理系统通过保存数据的多个版本来避免读写冲突,从而提高并发处理能力。如何理解MVCC?...案例说明接下来,通过一张图具体看一下Read View怎么判断的。图中有4个并发事务,并且在同一时刻开启了事务

    43740

    MySQL事务事务隔离级别

    对于数据库来说事务保证批量的DML要么全成功,要么全失败。 事务的四个特征ACID 原子性(Atomicity) 整个事务的所有操作,必须作为一个单元全部完成(或全部取消)。...持久性(durability) 持久性是指一个事务一旦被提交,它对数据库数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。 事务相关的语句只有:DML语句。...开启事务机制: 执行insert语句–>insert…(这个执行成功之后,把这个执行记录到数据库的操作历史当中,并不会向文件中保存一条数据,不会真正的修改硬盘上的数据。)...需要事务排队。 Oracle数据库默认的隔离级别是二挡起步:读已提交。(read committed) Mysql 数据库默认的隔离级别是三档起步:可重复读(repeatable read)。...本文内容到此结束了, 如有收获欢迎赞收藏关注✔️,您的鼓励是我最大的动力。 如有错误❌疑问欢迎各位指出。 主页:共饮一杯无的博客汇总‍ 保持热爱,奔赴下一场山海。

    77320

    MySQL进阶|MySQL事务(二)

    引言 上一个章节说了什么是事务,在MySQL数据库如何查询事务,以及哪些存储引擎支持事务。这一章节来说说事务的隔离。...上一篇传送:MySQL进阶|MySQL事务(一) 1.1 隔离的设计 事务隔离是数据库处理的基础之一。...回滚会结束用户的事务,并撤销正在进行的所有未提交的修改; 「创建保存」 SAVEPOINT identifier,SAVEPOINT 允许在事务创建一个保存,一个事务可以有多个 SAVEPOINT...; 「删除事务保存」 RELEASE SAVEPOINT identifier 删除一个事务保存,当没有指定的保存时,执行该语句会抛出一个异常; 「回滚到标记」 ROLLBACK TO identifier...把事务回滚到标记; 「设置事务隔离级别」 SET TRANSACTION 用来设置事务的隔离级别。

    13410

    聊聊MySQL事务

    聊聊MySQL事务 说起事务,大家可能都有自己的理解,事务的本质其实就是一连串的sql操作,要么全部成功,要么全部失败。...隔离性就是说在事务进行的过程,两次状态转换互不影响,举个栗子就是说我和别人一起给转账,这两笔转账之间互不影响。...持久性是说事务再进行的过程,状态一旦提交,不会因为其他原因而回退,状态结果将永久保留。...初次之外,在MySQL事务具有四种隔离级别,分别是Read Uncommitted,Reas Committed,Repeatable Read以及Serializable.为什么这么称呼,有什么区别...03 幻读 幻读的概念是如果一个事务根据某些条件查询出来一些记录,然后另外一个事务向表插入了一些符合这些条件的记录,那么原先的事务再次查询这个条件的时候,就能读出来一些其他的额外的记录。

    85420

    MySQL进阶|MySQL事务(一)

    文章目录 数据库事务 MySQL的存储引擎 InnoDB存储引擎架构 什么是事务 事务的状态 总结 数据库事务 MySQL 事务主要用于处理操作量大,复杂度高的数据。...那么在MySQL数据库,我们如何查看存储引擎是否支持事务呢?下面我就从我实验机器上的MySQL来一探究竟。...「实验环境」 MySQL 社区版, 8.0.1 MySQL的存储引擎 在MySQL,我们很容易查看存储引擎是否支持事务操作,也可以看到其他的存储引擎是否支持事务。...当在一个执行单元下,要么所有的事务都被commit,要么这些修改的就永久的保存下来,要么DBMS放弃所有的修改,退回到原始状态。...事务的状态 在MySQL数据库事务有5种状态,他们分别是活动状态、部分提交状态、失败状态、提交状态、中止状态 。 1)活动状态:事务在执行时的状态叫活动状态。

    15810

    MySQL进阶|MySQL事务(二)

    上一个章节说了什么是事务,在MySQL数据库如何查询事务,以及哪些存储引擎支持事务。这一章节来说说事务的隔离。1.1 隔离的设计事务隔离是数据库处理的基础之一。...回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;「创建保存」SAVEPOINT identifier,SAVEPOINT 允许在事务创建一个保存,一个事务可以有多个 SAVEPOINT;...「删除事务保存」RELEASE SAVEPOINT identifier 删除一个事务保存,当没有指定的保存时,执行该语句会抛出一个异常;「回滚到标记」ROLLBACK TO identifier...把事务回滚到标记;「设置事务隔离级别」SET TRANSACTION 用来设置事务的隔离级别。...开启事务、回滚事务mysql> START TRANSACTION;Query OK, 0 rows affected (0.00 sec)mysql>mysql> show tables;+-----

    22720

    MySQL进阶|MySQL事务(一)

    那么在MySQL数据库,我们如何查看存储引擎是否支持事务呢?下面我就从我实验机器上的MySQL来一探究竟。...「实验环境」MySQL 社区版, 8.0.11.1 MySQL的存储引擎在MySQL,我们很容易查看存储引擎是否支持事务操作,也可以看到其他的存储引擎是否支持事务。...1.3 什么是事务在百度百科是这样子定义事务事务(Transaction),一般是指要做的或所做的事情。在计算机术语是指访问并可能更新数据库各种数据项的一个程序执行单元(unit)。...当在一个执行单元下,要么所有的事务都被commit,要么这些修改的就永久的保存下来,要么DBMS放弃所有的修改,退回到原始状态。...1.4 事务的状态在MySQL数据库事务有5种撞他,他们分别是活动状态、部分提交状态、失败状态、提交状态、中止状态1)活动状态:事务在执行时的状态叫活动状态。

    19510

    MySql 三大知识——索引、锁、事务

    注意:小表使用全表扫描更快,中大表才使用索引。超级大表索引基本无效。...MySql 将数据按照页来存储,默认一页为 16kb,当你在查询时,不会只加载某一条数据,而是将这个数据所在的页都加载到 pageCache ,这个其实和 OS 的就近访问原理类似。...如下图所示: 我们看到,B+ Tree 将所有的 data 数据都保存到了叶子节点中,非也子节点只保存索引和指针。...一张经典的图: 这里有个注意,关于幻读,在数据库规范里,RR 级别会导致幻读,但是,由于 Mysql 的优化,MySql 的 RR 级别不会导致幻读:在使用默认的 select 时,MySql 使用...MVCC 的实现方式:事务以排它锁的方式修改原始数据,把修改前的数据存放于 Undo Log,通过回滚指针与数据关联,如果修改成功,什么都不做,如果修改失败,则恢复 Undo Log 的数据。

    70020

    MySQL 事务控制机制

    事务控制是 MySQL 的重要特性之一。在 MySQL ,InnoDB 和 NDB Cluster 是常见的事务型存储引擎。 1....这是和 Oracle 的事务管理明显不同的地方,如果应用是从Oracle 数据库迁移至 MySQL 数据库,则需要确保应用是否对事务进行了明确的管理。...事务中使用不同的存储引擎 MySQL 的服务层并不负责事务的处理,事务都是由存储引擎层实现。 在同一事务,使用多种存储引擎是不可靠的,尤其在事务混合使用了事务型和非事务型的表。...如同一事务,使用了 InnoDB 和 MyISAM 表: 如果事务正常提交,不会有什么问题; 如果事务遇到异常需要回滚,非事务型的表就无法撤销表更,这就会直接导致数据处于不一致的状态。 4....小结 本小节主要介绍了 MySQL 事务控制的一些特点,如何调整自动提交(autocommit)、如何调整隔离级别调整、以及讲解了在事务中使用混合存储引擎的缺点。

    97130

    MySql 三大知识——索引、锁、事务

    注意:小表使用全表扫描更快,中大表才使用索引。超级大表索引基本无效。...MySql 将数据按照页来存储,默认一页为 16kb,当你在查询时,不会只加载某一条数据,而是将这个数据所在的页都加载到 pageCache ,这个其实和 OS 的就近访问原理类似。...那么,如果项目中使用了分库分表,我们通常都会需要一个主键进行 sharding,那怎么办呢?在实现上,我们可以保留自增主键,而逻辑主键用来作为唯一索引即可。 2....这里有个注意,关于幻读,在数据库规范里,RR 级别会导致幻读,但是,由于 Mysql 的优化,MySql 的 RR 级别不会导致幻读:在使用默认的 select 时,MySql 使用 MVCC 机制保证不会幻读...MVCC 的实现方式:事务以排它锁的方式修改原始数据,把修改前的数据存放于 Undo Log,通过回滚指针与数据关联,如果修改成功,什么都不做,如果修改失败,则恢复 Undo Log 的数据。

    87440

    MySQL事务的流程和XA事务的特点

    建议先关注、赞、收藏后再阅读。在MySQL事务的流程如下:开启事务:使用START TRANSACTION或BEGIN命令来显式地开启一个事务。...提交或回滚事务:在执行完所有事务操作后,可以选择COMMIT命令来提交事务,将修改永久保存到数据库。...事务流程的核心思想是将多个需要一起执行的操作视为一个整体,保证其在数据库的一致性和完整性。如果在事务执行过程中发生了错误,可以通过回滚操作来保证数据的一致性,否则可以通过提交操作来永久保存修改。...MySQL的XA事务和普通事务有什么不同?MySQL的XA事务是分布式事务,涉及多个独立的资源管理器,其中每个资源管理器可以是不同的数据库或系统。...以下是 XA 事务MySQL 中常规事务的一些区别:多个资源管理器:XA事务涉及多个资源管理器,其中每个资源管理器可以是不同的数据库或系统。 在常规事务,通常只涉及一个资源管理器。

    28561

    MySQL事务隔离级别

    MySQL的InnoDB存储引擎的默认使用的隔离级别是REPEATABLE-READ(可重读)。...SELECT @@tx_isolation; 通过上面的命令可以查询出当前MySQL使用的隔离级别。...这里需要注意,MySQL对隔离级别的实现与SQL标准不同的地方在于InnoDB存储引擎在REPEATABLE-READ(可重读)事务隔离级别下使用的是Next-Key Lock锁算法,因此可以避免幻读的产生...但是你要知道的是,MySQL的InnoDB存储引擎默认使用的REPEATABLE-READ(可重读)并不会有任何性能损失(真的吗),因为MySQL做了一些相应的优化。...事务相关命令 在MySQL命令行的默认配置事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作。 我们可以通过下面的命令来设置隔离级别。

    52620

    mysql的innodb引擎默认事务隔离级别_mysql事务的隔离级别

    很多朋友可能会有疑惑,如果Spring事务可以设置隔离级别,而数据库也可以设置默认隔离级别,那他们到底是怎样的关系呢?...直接说结论: Spring会在事务开始时,根据你程序设置的隔离级别,调整数据库隔离级别与你的设置一致。...当使用Serializable级别时,Mysql在执行SQL时会自动修改为select .... lock in share mode, 即使用共享锁。...当使用Serializable级别时,如果两个事务读写的不是同一行,那么它们是互不影响的。...如果操作同一行记录,那么允许同时读,但如果出现一个对此行的写操作,则在写事务没有提交之前,所有的读事务都会被block。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    1.5K30
    领券