MySQL到底支不支持事务嵌套?

最近开发中遇到了使用MySQL,多次开启事务,出现了数据错乱问题,伪代码如下:

begin;# 操作1begin;# 操作2rollback;

登录后复制

执行完后出现了操作1的数据真正写入,只有操作2的数据回滚了。在第一个事务没有提交或回滚时,再开启第二个事务时,会自动提交第一个事务。

这明显不符合心理预期,而且也无法回滚一部分操作。那么问题来了,MySQL 支不支持事务嵌套呢

这个问题很难准确回答支持还是不支持!

首先,调用多次begin的写法,在MySQL里肯定是无法首先事务嵌套的。经过群内一位朋友的提醒,了解到MySQL中有一个叫savepoint和rollback to的语句。

示例代码:

DROP TABLE IF EXISTS `test`;CREATE TABLE `test` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(255) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; begin; insert into `test`(`name`) values('111'); SAVEPOINT p1; insert into `test`(`name`) values('222'); ROLLBACK TO p1; commit;

登录后复制

最终执行结果,test表中只有111这个数据,实现了部分操作的回滚操作。同理也避免了多次开启事务,导致前一个事务被提交的问题。

可能savepoint和rollback to语句并不能称之为事务嵌套,也不能说MySQL是支持还是不支持事务嵌套。总之通过savepoint和rollback to,是可以用来达到一些事务嵌套特性的。

以上就是MySQL到底支不支持事务嵌套?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1785030.html

(0)
上一篇 2025年2月20日 00:26:57
下一篇 2025年2月20日 00:27:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何在Workerman中使用MySQL进行数据存储

    如何在Workerman中使用MySQL进行数据存储 作为一个高性能的异步PHP Socket框架,Workerman广泛应用于网络通信服务器的开发。在许多实际项目中,我们常常需要使用MySQL进行数据存储和管理。下面我们将介绍如何在Wor…

    2025年5月2日
    000
  • laravel使用了哪些设计模式

    Laravel 使用多种设计模式来实现可重用、灵活且易于维护的代码:单例模式:确保只有一个类的实例。工厂方法模式:用于创建不同类型的对象。建造者模式:逐步构建复杂的对象。适配器模式:连接不兼容的接口或类。装饰器模式:向现有对象添加新行为。策…

    2025年5月2日
    000
  • laravel框架和tp的异同点在哪里呢

    Laravel 和 TP 框架的主要差异在于架构(MVC vs. MTV)、路由、ORM 和模板引擎,以及社区支持力度的不同。 Laravel 和 TP 框架的主要异同点 异点: 架构:Laravel 采用 Model-View-Contr…

    2025年5月2日
    000
  • laravel和thinkphp到底哪个并发高

    ThinkPHP在并发性能方面优于Laravel,原因包括:原生协程支持,灵活的进程管理,高效的内存优化以及对MySQL和Redis的原生支持。 Laravel 和 ThinkPHP 并发性能对比 哪个框架并发性能更好? Laravel 和…

    2025年5月2日
    000
  • laravel需要哪些基础

    学习 Laravel 需具备以下基础:1. 扎实的 PHP 编程基础;2. Web 开发基础知识;3. Composer 包管理工具的使用;4. Git 版本控制系统的使用;5. 关系型数据库的概念及 MySQL 或 PostgreSQL的…

    2025年5月2日
    000
  • laravel框架支持的几种数据库系统

    Laravel框架支持MySQL、PostgreSQL、MariaDB、SQL Server、SQLite和Oracle Database等数据库系统。选择数据库系统取决于特定应用程序的规模、性能、特性、成本和支持需求。 Laravel 框…

    2025年5月2日
    000
  • laravel支持几种数据库

    Laravel 支持多种数据库连接,包括:MySQL、PostgreSQL、SQLite、SQL Server、MariaDB、MongoDB 和 Redis。要连接到数据库,您需要在 .env 文件中设置配置并使用 DB 外观进行连接。 …

    2025年5月2日
    000
  • thinkphp怎么运行

    ThinkPHP Framework 的本地运行步骤:下载并解压 ThinkPHP Framework 到本地目录。创建虚拟主机(可选),指向 ThinkPHP 根目录。配置数据库连接参数。启动 Web 服务器。初始化 ThinkPHP 应…

    2025年5月2日
    000
  • thinkphp怎么安装

    ThinkPHP 安装步骤:准备 PHP、Composer、MySQL 环境。使用 Composer 创建项目。安装 ThinkPHP 框架及依赖项。配置数据库连接。生成应用代码。启动应用并访问 http://localhost:8000。…

    2025年5月2日
    000
  • thinkphp能做什么

    ThinkPHP 是一款用于构建 Web 应用程序的 PHP 框架,它提供:MVC 架构ORM(对象关系映射)控制器和视图层中间件数据库访问表单验证分页文件上传AJAX模块化设计性能优化安全措施完善的文档社区支持 ThinkPHP 能做什么…

    2025年5月2日
    000

发表回复

登录后才能评论