數據庫事務的做用

所謂事務是用戶定義的一個數據庫操做序列,這些操做要麼全作要麼全不作,是一個不可分割的工做單位。例如,在關係數據庫中,一個事務能夠是一條SQL語句、一組SQL語句或整個程序。 

簡單舉個例子就是你要同時修改數據庫中兩個不一樣表的時候,若是它們不是一個事務的話,當第一個表修改完,但是第二表改修出現了異常而沒能修改的狀況下,就只有第二個表回到未修改以前的狀態,而第一個表已經被修改完畢。

而當你把它們設定爲一個事務的時候,當第一個表修改完,但是第二表改修出現了異常而沒能修改的狀況下,第一個表和第二個表都要回到未修改的狀態!這就是所謂的事務回滾
例如,在將資金從一個賬戶轉移到另外一個賬戶的銀行應用中,一個賬戶將必定的金額貸記到一個數據庫表中,同時另外一個賬戶將相同的金額借記到另外一個數據庫表中。因爲計算機可能會因停電、網絡中斷等而出現故障,所以有可能更新了一個表中的行,但沒有更新另外一個表中的行。若是數據庫支持事務,則能夠將數據庫操做組成一個事務,以防止因這些事件而使數據庫出現不一致。若是事務中的某個點發生故障,則全部更新均可以回滾到事務開始以前的狀態。若是沒有發生故障,則經過以完成狀態提交事務來完成更新。
在 ADO.NET 中,可使用 Connection 和 Transaction 對象來控制事務。可使用 Connection.BeginTransaction 啓動本地事務。一旦開始一個事務,就可使用 Command 對象的 Transaction 屬性在該事務中登記命令。而後,能夠根據事務組件的成功或失敗狀況,使用 Transaction 對象提交或回滾在數據源中所作的修改。
相關文章
相關標籤/搜索