大家好,又见面了,我是全栈君。
有一点要知道,就是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