在CodeIgniter中,我们可以像这样使用数据库事务吗?

时间:2015-03-08 20:43:20

标签: php codeigniter

在CodeIgniter中,我们是否也允许这样使用“Active Record Class”?

<?php
$data_balance = array(
 'balance' => $newbalance
);
$data_transaction = array(
 'amount' => $amount,
 'user' => $user
);

$this->db->trans_start();
 // This is an "Insert" query for a table
 $this->db->set('date', 'NOW()', FALSE);
 $this->db->insert('financial_transactions', $data_transaction);
 // This is an "Update" query for another table
 $this->db->where('user_id', $user_id);
 $this->db->update('financial_balances', $data_balance);
$this->db->trans_complete();

if ($this->db->trans_status() === FALSE){
    // Do stuff if failed 
}
?>

请注意,我使用$ this-&gt; db-&gt;对于这两个查询,所以我不知道第一个的成功结果是否实际上被清除以检查第二个?

这会起作用吗?我是否可以相信这会使得两个查询都成功或两者都没有(我不希望一个成功而一个失败)

1 个答案:

答案 0 :(得分:0)

来自documentation

  

默认情况下,CodeIgniter以严格模式运行所有事务。启用严格模式时,如果您正在运行多组事务,则如果一个组失败,则将回滚所有组。如果禁用严格模式,则每个组都被独立处理,这意味着一个组的失败不会影响任何其他组。