MySQL — 事务的传播级别有什么作用?有哪些事务的传播级别?

置顶

学习专栏:【Java后端面试题】


事务的传播级别有什么作用?

  • 事务的 传播级别 定义了在 多个事务交互 时,事务 如何进行 协作和处理
  • 传播级别 用于控制 事务的范围和行为,确保 多个事务并发执行 时能够达到 预期的结果。不同的传播级别适用于不同的应用场景和需求。

有哪些事务的传播级别?

  1. PROPAGATION_REQUIRED(默认级别):如果当前没有事务,就创建一个新的事务;如果已经存在一个事务,就加入到当前事务中。这是最常用的传播级别,确保了一组操作要么全部成功,要么全部回滚,保持了一致性。

  2. PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前已经存在一个事务,就将当前事务挂起。这个级别用于需要独立的子事务,子事务不会受到外部事务的影响,可以独立提交或回滚。

  3. PROPAGATION_NESTED:创建一个嵌套事务,如果当前已经存在一个事务,则在嵌套事务内部创建一个子事务。嵌套事务可以独立提交或回滚,但只有在主事务提交时才会被永久保存。这个级别用于需要在主事务内部管理子事务的情况。

  4. PROPAGATION_SUPPORTS:如果当前有事务,就加入到当前事务中;如果当前没有事务,就以非事务方式执行。这个级别用于在一定程度上支持事务,但不会强制执行事务。

  5. PROPAGATION_NOT_SUPPORTED:以非事务方式执行,如果当前有事务,就将其挂起。这个级别用于需要明确不支持事务的情况。

  6. PROPAGATION_MANDATORY:如果当前有事务,就加入到当前事务中;如果当前没有事务,就抛出异常。这个级别用于需要强制要求事务存在的情况。

  7. PROPAGATION_NEVER:以非事务方式执行,如果当前有事务,就抛出异常。这个级别用于需要明确禁止事务的情况。

  8. PROPAGATION_NONE:以非事务方式执行,如果当前有事务,就抛出异常。这个级别用于完全不需要事务支持的情况。


------ 感谢观看,一键三连 ------

相关推荐
一个有温度的技术博主5 分钟前
DeepSeek Harness 深度解析:与 LangChain / LangGraph 的本质区别
数据库·oracle·langchain·harness
Wang's Blog29 分钟前
PostgreSQL笔记4: 市场地位、生态全景与行业应用实践
数据库·笔记·postgresql
隔窗听雨眠2 小时前
Oracle误Truncate操作恢复:从原理到实战的完整指南
数据库·oracle
Lethehong2 小时前
MySQL迁移如何做到零改造?四层兼容方案详解
数据库·mysql·adb
Json____2 小时前
五金制品行业-企业官网源码
java·大数据·数据库·企业站·wwwoop.com
深念Y4 小时前
Opencode Event 表写入优化方案
数据库·人工智能·ai·node.js·bug·优化·opencode
竹枝溪4 小时前
MySQL进阶:约束、多表设计、多表查询与事务
java·数据库·mysql·事务·子查询·acid·多表查询
技术长镜头5 小时前
别再只会“加索引”:从磁盘页到 B+Tree,彻底理解 MySQL 索引的设计与运行
后端·mysql
weixin_431600445 小时前
NestJS 入门(9):连上数据库,SQL 写在哪?
数据库·后端·sql·学习·nest.js
math_hongfan5 小时前
一对多的数据库姻缘:ArkTS 为鸿蒙订单设计外键与明细表
数据库·华为·harmonyos