$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 Raise Error“ Updated_by列不能 为空”。所以我想回滚已删除的数据,因为我使用事务但不回滚已删除的数据。
任何人都可以帮助您解释为什么事务无法正常工作
答案 0 :(得分:0)
代码是正确的。但是我使用MyISAM表,因此事务不会影响此类表。所以我将表MyISAM的类型更改为InnoDb
现在很好用