用了try catch 是不是就不需要再用mysql的事務了?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
看你try catch是否有對資料庫進行操作,當然涉及對多表更新插入,為了確保資料的完整性,必須開啟事務操作
//開啟事務 try { //完成提交事務 } catch(throw $e) { //rollback }
取決於你的catch裡面是什麼,如果try後面就一句,拋異常了,就沒有commit,OK。 如果doOne執行了,你沒有用事務,他autocommit了。你再catch要把doOne的單獨回滾還是怎麼辦? 下面是兩句,如果你有10句打算怎麼catch?
try { doOne doTwo } catch(throw $e) { //rollback }
事務和try catch是兩個東西,之所以在啟動事務的時候使用try catch是因為如果在使用pdo mysqli這類的擴展的時候,數據庫報錯會給php 返回一個錯誤,讓php 執行的程式終止,從而不能執行到rollback這一步的函數命令(在執行錄入的時候程序就中斷了),而使用try catch 再執行事務操作的時候就安全許多
try catch
pdo
mysqli
rollback
要分清楚try catch是屬於php java 這類的邏輯操作的東西,而transation是屬於資料庫的東西,兩者可以配合但是不能替代
php
java
transation
看你try catch是否有對資料庫進行操作,當然涉及對多表更新插入,為了確保資料的完整性,必須開啟事務操作
取決於你的catch裡面是什麼,如果try後面就一句,拋異常了,就沒有commit,OK。
如果doOne執行了,你沒有用事務,他autocommit了。你再catch要把doOne的單獨回滾還是怎麼辦?
下面是兩句,如果你有10句打算怎麼catch?
事務和
try catch
是兩個東西,之所以在啟動事務的時候使用try catch
是因為如果在使用pdo
mysqli
這類的擴展的時候,數據庫報錯會給php 返回一個錯誤,讓php 執行的程式終止,從而不能執行到rollback
這一步的函數命令(在執行錄入的時候程序就中斷了),而使用try catch
再執行事務操作的時候就安全許多要分清楚
try catch
是屬於php
java
這類的邏輯操作的東西,而transation
是屬於資料庫的東西,兩者可以配合但是不能替代