數據庫事務(Database Transaction)是一組數據庫操作的處理單元。事務符合ACID的特性:Atomic:原子性,要么全部要么一無所有。Consistent:一致性,所有依賴關系以及約束一致。Isolated:分離性,不同事務不互相影響。Durable:持久性,提交事務的數據需要持久化。
為什么要使用事務
實現事務主要有兩大功能:
1.保證數據庫的consistent(一致性狀態),保持所有依賴關系以及約束一致)。哪怕數據庫管理系統出現故障時(例如斷電),也能恢復到一致性狀態。例如一個銀行轉帳系統,張三給李四轉3000圓RMB,張三帳號上減3000和李四帳號上加3000需要同時完成,否則系統的帳就不平了。也例如有些銷售系統的匯總表和明細表,是一個主表和一個從表,需要同步更新。
2.并發時分離不同事務操作。例如編輯過程中的數據不給其他事務查詢到。這也是相對的,在特效需求下可能要支持dirty read(臟讀),但不是這里討論的范圍了。
SQL Server 2008 的事務類型
1.自動提交事務 Autocommit Transactions
這是SQL Server默認的事務類型,每一條單獨的SQL語句(SQL statement)都是單獨的一個事務,語句執行完畢后自動提交。調用方不需要手工控制事務流程。
2.顯示事務 Explicit Transactions
調用方需要調用API或者使用T-SQL的BEGIN TRANSACTION 語句來打開事務。需要調用COMMIT 或者 ROLLBACK TRANSACTION 來提交或者回滾。
3.隱式事務 Implicit Transactions
使用SET IMPLICIT_TRANSACTIONS ON把事務模式變成隱式模式。調用方不需要執行BEGIN TRANSACTION 語句來打開事務。數據庫引擎執行到SQL語句的時候自動打開事務。調用方需要調用COMMIT 或者 ROLLBACK TRANSACTION 來提交或者回滾。當數據庫引擎執行下一個SQL語句時又自動打開一個新事務。
文章來源于領測軟件測試網 http://www.kjueaiud.com/