事务案例

发布时间:2018-04-11 编辑:钰歆博客 阅读(37)

    //开启事务

    D("exam")->startTrans();

    //事务回滚

    D("exam")->rollback();

    //事务提交

    D("exam")->commit();


        //  在User模型中启动事务

        $User->startTrans();

        $Info = M("Info"); 

        $Info->save($User);

        if (操作成功){

            // 提交事务

            $User->commit(); 

        }else{

            // 事务回滚

            $User->rollback(); 

        }

    或者:

        

            $Model = M();

            $Model->startTrans();

            $ret = $Model->table('xf_order')->where($where)->save($data);

            if (操作成功){

                // 提交事务

                $Model->commit(); 

            }else{

                // 事务回滚

                $Model->rollback(); 

            }

    值得注意的是:

           1.只有数据库引擎是InnoDB才支持事务,在执行事务的过程中不能再做其他查询类的工作

           2.数据库操作涉及到跨库,需要同时开始两个库的事务,避免事务回滚的不一致(即一个库回滚了,另一个库没回滚)

           3.开启事务需要制定明确的对象表或者模型

           4.如果设置了读写分离。一定不要来回切换数据库。容易导致事务的异常出错

标签

还没有帐号?马上注册