搜尋

首頁  >  問答  >  主體

php中try catch 和 mysql中的事務的關係

用了try catch 是不是就不需要再用mysql的事務了?

伊谢尔伦伊谢尔伦2775 天前1048

全部回覆(3)我來回復

  • 三叔

    三叔2017-06-07 09:25:24

    看你try catch是否有對資料庫進行操作,當然涉及對多表更新插入,為了確保資料的完整性,必須開啟事務操作

    //開啟事務
    try {
    //完成提交事務
    } catch(throw $e) {
    //rollback
    }

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-07 09:25:24

    取決於你的catch裡面是什麼,如果try後面就一句,拋異常了,就沒有commit,OK。
    如果doOne執行了,你沒有用事務,他autocommit了。你再catch要把doOne的單獨回滾還是怎麼辦?
    下面是兩句,如果你有10句打算怎麼catch?

    try {
     doOne
     doTwo
    } catch(throw $e) {
    //rollback
    }

    回覆
    0
  • 天蓬老师

    天蓬老师2017-06-07 09:25:24

    事務和try catch是兩個東西,之所以在啟動事務的時候使用try catch是因為如果在使用pdo mysqli這類的擴展的時候,數據庫報錯會給php 返回一個錯誤,讓php 執行的程式終止,從而不能執行到rollback這一步的函數命令(在執行錄入的時候程序就中斷了),而使用try catch 再執行事務操作的時候就安全許多

    要分清楚try catch是屬於php java 這類的邏輯操作的東西,而transation是屬於資料庫的東西,兩者可以配合但是不能替代

    回覆
    0
  • 取消回覆