文档章节

MYSQL 嵌套事务(SAVEPOINT) 与Spring 事务传播

liangxiao
 liangxiao
发布于 07/20 00:51
字数 442
阅读 12
收藏 0

摘要

savepoint 关键字可以实现嵌套事务。结合savepoint关键字,更方便理解spring的事务传播。

事务嵌套

初始化表脚本

drop table t;
create table t(a int, primary key(a));

开启事务

mysql事务默认是自动提交的。通过下面的命令关闭事务自动提交。(mysql事务特性是基于同一个链接,不同的链接没有事务关系,所以在测试的时候,保证是同一个窗口)

set @@autocommit = 0;
select @@autocommit;

局部事务,外部事务都正常提交

-- 开启事务
begin;

insert into t(a) values(1);

-- 
SAVEPOINT s;

insert into t(a) values(2);

RELEASE SAVEPOINT s;

commit;

查询结果,1和2都插入成功了。

select * from t;

局部事务回滚,外部事务提交


begin;

insert into t(a) values(1);

SAVEPOINT s;

insert into t(a) values(2);

ROLLBACK to  SAVEPOINT s;

commit;

这里局部事务回滚了,整体事务提交,查询结果,只有1插入成功,2没有插入,表示外部事务提交了,局部事务回滚了。

select * from t;

局部事务提交,外部事务回滚

begin;

insert into t(a) values(1);

SAVEPOINT s;

insert into t(a) values(2);

 RELEASE  SAVEPOINT s;

ROLLBACK;

全局事务回滚,整个事务都回滚了,1和2都没有插入成功

select * from t;

局部事务回滚,外部事务回滚

这个很明显,1和2都不能插入成功。

参考文档

mysql嵌套事务 事务之六:spring 嵌套事务

© 著作权归作者所有

liangxiao
粉丝 22
博文 332
码字总数 121102
作品 0
杭州
后端工程师
私信 提问
Spring 事务传递教程

通过这篇文章,你将学习到Spring框架中中事务的传递 1. 简介 在处理Spring管理的事务时,开发人员可以以传播的方式定义事务的行为。换句话说,开发人员能够决定业务方法如何被封装在逻辑和物...

zetaplusae
2013/10/25
1K
0
Spring 事务相关知识(转载)

Spring 事务的传播属性 所谓spring事务的传播属性,就是定义在存在多个事务同时存在的时候,spring应该如何处理这些事务的行为。这些属性在TransactionDefinition中定义,具体常量的解释见下...

晨猫
2017/11/09
13
0
Spring 深入理解事务原理

IT虾米的博客 一、事务的基本原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步...

hgqxjj
2018/06/26
0
0
说说Spring事务的传播机制

写在前面 琪姐问了个问题,原来的方法逻辑,类似如下伪代码: 相信很好理解。 琪姐说将这段逻辑放到线程池中一起提交就OK(意思应该是DB落库成功)。 但是把那段逻辑拿出来就落库失败: 最后...

春哥大魔王的博客
07/07
25
0
《Spring 事务机制详解》

Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考。 Spring声明式事务让我们从复杂的事务处理中得到解脱。使得...

吕檀溪
2014/04/04
365
0

没有更多内容

加载失败,请刷新页面

加载更多

spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
35分钟前
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部