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

CI数据库事务的问题。。。

[复制链接]
发表于 2008-5-2 13:18:44 | 显示全部楼层 |阅读模式
在CI中做了这样一个测试,如下:

function insert_admin()
    {
        $this->db->trans_start();
        $this->db->query("insert into `e_admin`(AdminName) values('aaa')");
        $this->db->query("insert into `e_admin`(AdminNam) values('')");
        $this->db->trans_complete();
        if ($this->db->trans_status() === FALSE)
        {
            $this->db->trans_rollback();
        }
        else
        {
            $this->db->trans_commit();
        }
    }
e_admin数据表类型是innodb,AdminName是一个字段。
很明显第二个insert出错,但第一条插入还是插入了数据库。。。为什么啊
发表于 2008-5-4 21:25:14 | 显示全部楼层
transaction不是
开始trans
。。
blahblah。。
。。。
rollback或者commit

trans_complete??
有这么一个步骤吗?
我就土鳖的问一下
 楼主| 发表于 2008-5-4 22:44:20 | 显示全部楼层
上面哪个是手册上的例子啊
发表于 2008-5-5 00:33:09 | 显示全部楼层
$this->db->trans_start();
        $this->db->query("insert into `e_admin`(AdminName) values('aaa')");
       $insert_id1 = $this->db->affected_row();
       if ($insert_id1<=0)
        {
            $this->db->trans_rollback();
           show_error('插入数据库失败');
        }

        $this->db->query("insert into `e_admin`(AdminNam) values('')");
       $insert_id2= $this->db->affected_row();
        if ($insert_id2<=0)
        {
            $this->db->trans_rollback();
           show_error('插入数据库失败');
        }
            $this->db->trans_commit();

本版积分规则