在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;对于这两个查询,所以我不知道第一个的成功结果是否实际上被清除以检查第二个?
这会起作用吗?我是否可以相信这会使得两个查询都成功或两者都没有(我不希望一个成功而一个失败)
答案 0 :(得分:0)
默认情况下,CodeIgniter以严格模式运行所有事务。启用严格模式时,如果您正在运行多组事务,则如果一个组失败,则将回滚所有组。如果禁用严格模式,则每个组都被独立处理,这意味着一个组的失败不会影响任何其他组。