Codeigniter: транзакция mysql и disabled_rows - PullRequest
1 голос
/ 08 августа 2011

Мне нужно сделать несколько вставок / обновлений, чтобы я придумал транзакцию для отката, если что-то пойдет не так. Кроме того, мое приложение должно обновить запись, если она уже существует, и вставить, если нет.

Итак, прежде всего я пытаюсь обновить запись с использованием уникального идентификатора, и если она вернётся влияет__отлично = 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();
}

Заранее спасибо!

1 Ответ

2 голосов
/ 08 августа 2011

Я использую MySQL ON DUPLICATE KEY UPDATE для обработки этого случая.Тем не менее, реализация ActiveRecord CodeIgniter не поддерживает это изначально, и принятый ответ в этой теме:

Как мне использовать ON DUPLICATE KEY UPDATE в моей модели CodeIgniter?

Кажется мертвым.Итак, рассмотрите возможность использования сырого MySQL вместо шаблона ActiveRecord;это довольно распространено среди разработчиков CI (я не использую их реализацию AR).

...