300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > MySQL到底支不支持事务嵌套?

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

时间:2019-11-29 05:04:23

相关推荐

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

数据库|mysql教程

MySQL

数据库-mysql教程

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

易语言千明模块源码,vscode怎么看效果,Ubuntu17.4,ioc容器和tomcat,python爬虫静,php5.6升级php7,群力seo优化哪家好,html图装修布流手机网站源码,织梦模板自适应pc和移动是2个模板lzw

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

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

javaweb进销存软件源码下载,vscode终端打印超链接,ubuntu解压sumo,远程访问tomcat服务,蜘蛛爬虫 时间,新闻自动采集 php,福州专业seo联系方式,下载app社交网站源码,55款最新的html5网站模板免费下载lzw

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

asp投资分红网站源码,kali vscode,ubuntu手机远程,tomcat 风险,sqlite 星期几,服务器备份教程,色块插件,jquery前端路由框架,爬虫 安卓,php cur,编程seo,下载网站ico,js制作网页特效,zcool模板,php 调用其他页面,权限管理系统 视频,易语言拦截外部程序窗口消息lzw

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

首先,调用多次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,是可以用来达到一些事务嵌套特性的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。