Codeigniter Транзакции

используя транзакции Codeigniter

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->trans_complete();

Это работает нормально, проблема у меня в том, что внутриtrans_start и я'trans_completem вызывает другие функции, и эти функции имеют дело с базой данных, поэтому они содержат вставки и обновления, а некоторые удаляют ... например:

$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);
    }

Ответы на вопрос(6)

Ваш ответ на вопрос