数据库事务在控制器codeigniter中不起作用

时间:2014-08-18 05:05:59

标签: php codeigniter codeigniter-2

我在控制器中调用多个模型,所有模型都进行数据库查询。 我做了类似的事情

public function InsertSale()
    {
            $this->db->trans_start(TRUE);
            // all logic part and models calling which do insert/update/delete

            $this->db->trans_complete();
}

上面的代码即使在某些查询后出现问题而无法回滚也无法正常工作。

2 个答案:

答案 0 :(得分:0)

TRUE中使用$this->db->trans_start(TRUE);会将事务置于测试模式,这意味着无论发生什么,查询都将被回滚。

如果您想查看查询是否有效,您可以使用:

$this->db->trans_status();

根据结果,返回TRUE / FALSE。

(我知道这是一个老问题,但是,我想我应该在这里找一个答案,因为其他人来看。)

希望这有帮助!

答案 1 :(得分:0)

所以你必须这样跟着

$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(FALSE); 

$this->db->insert('table_name', $someDataArray); # Inserting data

# Updating data
$this->db->where('id', $id);
$this->db->update('table_name', $someDataArray); 

$this->db->trans_complete();

这很好用。 Check this answer too