雖然這個問題已經被多次提出,但我仍然不確定。我的設置是這樣的:我使用jdbc並將autocommit設置爲false。假設我有3條插入語句,我想作爲一個事務執行,然後是conn.commit()
。在jdbc中進行事務時是否調用conn.rollback冗餘?
示例代碼:
try {
getConnection()
conn.setAutoCommit(false);
insertStatment() //#1
insertStatment() //#2
insertStatment() //#3, could throw an error
conn.commit()
} catch(Sql exception) {
conn.rollback() // why is it needed?
}
說我有兩個場景
- 要麼,不會有任何錯誤,我們會打電話給
conn.commit()
,一切都將被更新。 - 說前兩個語句正常工作,但第三個語句出現錯誤。因此不調用
conn.commit()
,我們的數據庫處於一致狀態。那麼,爲什麼我需要撥打conn.rollback()
?
我注意到有人提到回滾會影響連接池嗎?任何人都可以向我解釋,它會如何影響?