用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1748|回复: 1
收起左侧

[数据库] CI的事务使用有问题,求助一下

[复制链接]
发表于 2018-8-2 18:12:57 | 显示全部楼层 |阅读模式
本帖最后由 红瓜 于 2018-8-2 18:18 编辑

以下是控制器中的代码
PHP复制代码
$this->db->trans_start();
$insert_user = $this->user_model->insert_data([
    'student_id' => $student_id,
    'username' => $username,
    'user_password' => $user_password,
    'user_email' => $user_email,
    'level_id' => 1  //后面改,接入website_model
]);
$insert_userFront = $this->user_front_model->insert_data([
    'student_id' => $student_id
]);
$this->db->trans_complete();
if (!$this->db->trans_status()){
    return_msg(false, '数据库出错 注册失败');
}
复制代码


以下是model中的insert_data方法,使用了构造查询。
PHP复制代码
public function insert_data($in_data, $set_data = true){
 
    //添加数据
 
    if ($set_data){
        $in_data = $this->set_data($in_data);
    }
    $result = $this->db->insert($this->table_name,$in_data);
    return $result;
}
复制代码


现在我测试时遇到的问题是,第二个model插入数据失败后(由于主键重复而失败),事务不会自行回滚,第一个model仍旧更新了数据。
然后,下边的判断trans_status的句子也没有执行。
想知道问题在哪里呢?

本版积分规则