CI源碼分析(三)—DB事務,ci源碼db事務

來源:互聯網
上載者:User

CI源碼分析(三)—DB事務,ci源碼db事務


(0) 使用方法
可以使用系統提供的方法:$this->db->trans_start(); // 開始事務$this->db->query(); // 執行sqls$this->db->trans_complete(); // 結束事務(不需要關心是否復原)if !$this->db->trans_status do something; // 錯誤處理
也可以自己處理commit和rollback: $this->db->trans_begin(); // 開始事務$this->db->query(); // 執行sqlsif !$this->db->trans_status$this->db->trans_rollback(); // 復原,並處理錯誤處理else$this->db->trans_commit(); // 提交
(1) 錯誤處理

  • 開發、測試環境中可以開啟debug模式,會直接展示db錯誤資訊
  • 生產環境中,需要根據tran_staus()方法來判定是否需要記錄一條error日誌,並給前端返回錯誤資訊(個人覺得在trans_complete中就應該log一條error,或者db類提供error()方法擷取錯誤資訊)

(2) 多層事務
  • 多層事務時,ci通過_trans_depth記錄了事務層級,只處理最外層的事務, 即_trans_depth>1時 trans_start&&trans_complete不起作用, 
  • 但是,_trans_depth只在trans_start和trans_complete中才會加減計數,也就是如果手動操作事務,計數不起作用,第一次trans_commit就起作用了(手動執行的確不好控制事務層級,commit和rollback比較難處理, 所以最好使用系統推薦的方式處理事務)


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.