Codeigniter Транзакции
используя транзакции Codeigniter
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->trans_complete();
Это работает нормально, проблема у меня в том, что внутриtrans_start
и я'trans_complete
m вызывает другие функции, и эти функции имеют дело с базой данных, поэтому они содержат вставки и обновления, а некоторые удаляют ... например:
$this->db->trans_start();
$this->utils->insert_function($data);
$this->utils->update_function2($test);
$this->db->trans_complete();
Теперь, если эти функции выполняются и возникают некоторые ошибки, CodeIgniter won 'сделать откат.
Как лучше всего справиться с такой проблемой?
Единственное решение, которое я имею в виду, это вернуть ошибку из этих функций и внутри этих функций добавить (trans_stat
а такжеtrans_complete
) И если он возвращает тест ошибки$this->db->trans_rollback
например:
$this->db->trans_start();
$result = $this->utils->insert_function($data);
if($result === false){
$this->db->trans_rollback();
}
$this->db->trans_complete();
Есть ли лучший способ сделать это?
Обновление 1:
По запросу образец внешней функции я 'я звоню:
// insert_function contains
$rec = array(
'numero' => $numero,
'transaction_id' => $id,
'debit' => $product_taxes['amount_without_taxes'],
'date' => $data['date_transaction'],
);
$this->addExerciceAccountingRecords($rec);
and addExerciceAccountingRecords contains
function addExerciceAccountingRecords($records) {
$this->db->insert('transactions_exercices', $records);
}