SQL 和Oracle對數據庫事務處理的差異性

發表于:2009-11-01來源:作者:點擊數: 標簽:數據庫SqlsqlSQLoracle
什么是事務 數據庫事務(Database Transaction)是一組數據庫操作的處理單元。事務符合ACID的特性:Atomic:原子性,要么全部要么一無所有。Consistent:一致性,所有依賴關系以及約束一致。Isolated:分離性,不同事務不互相影響。Durable:持久性,提交事務的數據
什么是事務

  數據庫事務(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.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97