MySQL 事務主要用於處理操作量大,複雜度高的數據。比如說,在人員管理系統中,你刪除一個人員,你既需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操作語句就構成一個事務!
1.原子性:一件事要麼全部執行,要麼一件也不執行
2.一致性:在事務開始之前和事務結束以後,數據庫的完整性沒有被破壞。比如張三給李四轉100元,轉賬後張三少了100,李四多了100,總金額不變
3.隔離性:數據庫允許多個併發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務併發執行時由於交叉執行而導致數據的不一致。
4.持久性:事務處理結束後,對數據的修改就是永久的,即便系統故障也不會丟失。
JDBC事務控制
實例:
檢查點
有時候一個事務可能是一組複雜的語句,因此可能想要回滾到事務中某個特殊的點。JDBC Savepoint幫我們在事務中創建檢查點(checkpoint),這樣就可以回滾到指定點。當事務提交或者整個事務回滾後,爲事務產生的任何保存點都會自動釋放並變爲無效。把事務回滾到一個保存點,會使其他所有保存點自動釋放並變爲無效。
髒讀:讀取一個未提交的數據
不可重複讀:倆次讀取同一事務結果不一樣
幻讀:倆次讀取的行記錄數不一樣
事務隔離分爲不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重複讀(repeatable read)和串行化(Serializable)。