Транзакции не работают должным образом в CodeIgnitor - PullRequest
0 голосов
/ 10 января 2019
    $debit_array = $this->input->post('debit[]');
    $credit_array = $this->input->post('credit[]');

    if(array_sum($debit_array) == array_sum($credit_array)){
        $this->db->trans_start();
        $this->db->where('Entry_id',$this->input->post('entry_id'));
        $this->db->delete('mk_account_transaction_master');

        $uniqueid = uniqid();
        $uniquecode = "Upadte Entry-".array_sum($debit_array)."-".$uniqueid;


    //  $this->db->trans_start();
        for($i=0;$i<sizeof($debit_array);$i++){

            $insert_data = array(
                'account_date' => date('Y-m-d',strtotime($this->input->post('date'))),
                'books' => $this->input->post('branch'),
                'account' => $this->input->post('account['.$i.']'),
                'debit' => $this->input->post('debit['.$i.']'),
                'credit' =>$this->input->post('credit['.$i.']'),
                'remarks' =>$this->input->post('remarks['.$i.']'),
                'updated_by' => $this->session->userdata(''),
                'entry_id' => $uniquecode,
                'display_item_id' => $disp1_id,
                'type' => $acc1_type,
                'group_id' => $grp1_id,
                'CF_Type' => $cf1_type,
                'Last_update_time' => date('Y-m-d H:m:s'),
            );
            $this->db->insert('mk_account_transaction_master',$insert_data);
        }
        $this->db->trans_complete();
    return 1;

}

Я могу использовать trans_start () и trans_complete (). Вышеупомянутая функция сначала удаляла некоторые данные, а затем вставляла некоторые данные. Если при вставке кода возникла какая-либо ошибка базы данных, удалите откат запроса, но моя функция удаления кода не откатилась назад

"'updated_by' => $ this-> session-> userdata ('')" В этой строке в столбцах updated_by задано нулевое значение, поэтому ошибка повышения Sql "столбец updated_by не может быть нулевым ". Поэтому я хочу откат удаленных данных, потому что я использую транзакции, но не откат удаленных данных.

Кто-нибудь помогает, почему транзакции не работают должным образом

1 Ответ

0 голосов
/ 20 января 2019

Код был верным. Но я использовал таблицу MyISAM, чтобы транзакции не влияли на таблицы такого типа. Поэтому я изменил тип таблицы MyISAM на InnoDb

Теперь все работает хорошо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...