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


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

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

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

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

    https://github.com/Zhucola/yii_core_debug/blob/master/%5B%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E5%88%97%E4%B8%89%5D%E4%BA%8B%E5%8A%A1%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90.md

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

  • 相关阅读:
    Luogu P3275 糖果
    Python基础学习
    SharePoint 2013
    Office
    KnockoutJS
    SharePoint 2013
    Bootstrap
    SharePoint 2013
    CSS
    AngularJS
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453319.html
Copyright © 2020-2023  润新知