CI框架中事務封裝的很完善,使用起來很簡單
1.不開啟事務
//不開啟事務 前兩個sql 能夠執行成功,第三個執行失敗 $this->device_model->addForCamera(1, '愛三123', '2016122903', 0); $this->device_model->setStateInDevices(1, array(2)); $this->device_model->addForCamera(1, '愛三1234567890', '2016122903', 0);
2.自動事務
//失敗自動回滾 $this->db->trans_start(); //三條sql 都執行失敗 $this->device_model->addForCamera(1, '愛三123', '2016122903', 0); $this->device_model->setStateInDevices(1, array(2)); $this->device_model->addForCamera(1, '愛三1234567890', '2016122903', 0); $this->db->trans_complete();
3.手動事務
//若失敗手動回滾 成功手動提交 $this->db->trans_begin(); //三條sql 都執行失敗 $this->device_model->addForCamera(1, '愛三123', '2016122903', 0); $this->device_model->setStateInDevices(1, array(2)); $this->device_model->addForCamera(1, '愛三1234567890', '2016122903', 0); if ($this->db->trans_status() === false) { $this->db->trans_rollback(); } else { $this->db->trans_commit(); }