事务处理

mysql事务处理http://dev.mysql.com/doc/refman/5.0/en/commit.html

后台事务实现

  • 后台内置事务 begin end 方法

    begin end 方法说明/ecos/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(trueapp::get('b2c')->_('添加成功!'));
            }else{
                
    $this->end(falseapp::get('b2c')->_('添加失败'));
            }
        }else{
            
    $this->end(false$message);
        }
    }

  • 后台自定义实现事务

    自定义实现事务说不使用begin end而是使用Ecstore中的base_db_connections类中定义的事务方法来实现事务事务处理方法说明 /ecos/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事务实现

前台,api都没有内置的方法来实现事务处理,如果需要用事务处理则需要使用base_db_connections中的事务处理方法来实现,参照后台自定义实现事务

beginTransaction 开始事务
commit 事务提交
rollBack 事务回滚

內容目录

上一个主题

finder列表显示多表数据

下一个主题

多表连接

快速搜索

输入相关的模块,术语,类或者函数名称进行搜索