mysql事务处理https://dev.mysql.com/doc/refman/5.0/en/commit.html
begin end 方法说明https://blog.i7f.cn/advance/base/mvc/c/base_controller.html#id18
例: Ecstore的后台添加新会员,在Ecstore的中添加新会员需要先插入pam_account表中,在插入到b2c_members表中 为保证一致性,两个表都插入成功,那么则需要用到事务,这就用begin end来实现
<?php
function add(){
    ...
    $this->begin();
    $mem_model = &$this->app->model("members");
    if($mem_model->validate($_POST,$message)){
        $id = $mem_model->create($_POST);//在pam表中添加新增会员信息
        if($id!=''&&$id){
            ...
               $data = ...;//会员信息数据
            ...
            $obj_account->fireEvent('register',$data,$id);//在members表中添加新增会员信息
            $this->end(true, app::get('b2c')->_('添加成功!'));
        }else{
            $this->end(false, app::get('b2c')->_('添加失败'));
        }
    }else{
        $this->end(false, $message);
    }
}
自定义实现事务说不使用begin end而是使用Ecstore中的base_db_connections类中定义的事务方法来实现事务事务处理方法说明 https://blog.i7f.cn/advance/base/mvc/m/base_db_connections.html#id24
beginTransaction 开始事务 commit 事务提交 rollBack 事务回滚
还是上面那个问题,使用base_db_connections中的事务处理方法来实现
<?php
function add(){
    ...
    $db = kernel :: database();
    $db->beginTransaction();//事务开始
    $mem_model = &$this->app->model("members");
    if($mem_model->validate($_POST,$message)){
        $id = $mem_model->create($_POST);//在pam表中添加新增会员信息
        if($id!=''&&$id){
            ...
               $data = ...;//会员信息数据
            ...
            $obj_account->fireEvent('register',$data,$id);//在members表中添加新增会员信息
            $db->commit();//提交
            $message = '添加成功';
        }else{
           $db->rollback();
           $message = '添加失败';
        }
    }else{
       $db->rollback();
       $message = '添加失败';
    }
    ...
}
注:后台推荐使用begin end 方法来处理事务
前台,api都没有内置的方法来实现事务处理,如果需要用事务处理则需要使用base_db_connections中的事务处理方法来实现,参照后台自定义实现事务
beginTransaction 开始事务 commit 事务提交 rollBack 事务回滚