複数の挿入/更新を行う必要があるため、問題が発生した場合にロールバックするトランザクションを考え出しました。さらに、私のアプリケーションは、レコードがすでに存在する場合は更新し、存在しない場合は挿入する必要があります。
したがって、最初に、一意のIDを使用してレコードを更新しようとします。それがaffected_rows = 0を返す場合は、挿入を続行します。
おそらく私はトランザクション/影響を受ける行内の何かを見逃します、それは常にaffected_rows=0を返します。
以下はコードです:
$this->db->trans_start();
$this->db->where('order_id', $order_id);
$this->db->where('order_status', 'Active');
$this->db->update('orders', $order);
$this->db->where('order_id', $order_id);
$this->db->where('sku', $item_sku);
$this->db->update('order_items', $order_items);
$this->db->trans_complete();
if ($this->db->affected_rows()==0){
$this->db->trans_start();
$this->db->insert('orders', $order);
$this->db->insert('order_items', $order_items);
$this->db->trans_complete();
}
前もって感謝します!