MySQL支不支撑事务嵌套的案例分析
发布时间:2022-02-25 17:22:48 所属栏目:MySql教程 来源:互联网
导读:MySQL支不支持事务嵌套的案例分析?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! 最近开发中遇到了使用MySQL,多次开启事务,出现了数据错乱问题,伪代码如下: beg
MySQL支不支持事务嵌套的案例分析?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! 最近开发中遇到了使用MySQL,多次开启事务,出现了数据错乱问题,伪代码如下: begin; # 操作1 begin; # 操作2 rollback; 执行完后出现了操作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; 最终执行结果,test表中只有111这个数据,实现了部分操作的回滚操作。同理也避免了多次开启事务,导致前一个事务被提交的问题。 可能savepoint和rollback to语句并不能称之为事务嵌套,也不能说MySQL是支持还是不支持事务嵌套。总之通过savepoint和rollback to,是可以用来达到一些事务嵌套特性的。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |