我现在A函数开启事务,然后调用B函数,B函数中也开启了事务

2022-07-11 10:07:28 浏览数 (1)

大家好,又见面了,我是全栈君。

有一点要知道,就是MYSQL不支持事务嵌套。 所以PHP再包装,也是一个事务

laravel的事务嵌套,就是一个栈。 事务A开启事务(真实开启) 事务B开启事务(只是标记,并非真实开启了事务) 事务B提交事务(只是标记,并非真的提交了事务) 事务A提交事务(真实提交)

事务A开启事务(真实开启) 事务B开启事务(只是标记,并非真实开启了事务) 事务B提交事务(只是标记,并非真的提交了事务) 事务A回滚事务(真实回滚)

从这个栈就能看出来,只有第一次开启事务,和第一次回滚事务,和最后一次提交事务,是真实操作了数据库,其他事务操作都是假的,只是做了标记。

https://github.com/Zhucola/yii_core_debug/blob/master/[数据库系列三]事务源码分析.md

参考:https://learnku.com/articles/15618/transactions-implementation-of-nested-transaction-for-laravel

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112276.html原文链接:https://javaforall.cn

0 人点赞