Oracle中事務處理

1.  什麼是事務

     事務用於保證數據的一致性,它由一組相關的dml語句組成,該組的dml(數據操作語言,增刪改,沒有查詢)語句要麼全部成功,要麼全部失敗。

     例:網上轉賬就是典型的要用事務來處理,用於保證數據的一致性。

 

2.  事務和鎖

     當執行事務操作時(dml語句),oracle會在被作用的表上加鎖,防止其它用戶修改表的結構。這裏對我們的用戶來講是非常重要的。其它進程排序,知道1號進程完成,鎖打開,2號進程進入。依次進行,如果有進程級別較高的,可以插隊。

 

3.  提交事務

     當執行commit語句可以提交事務。當執行了commit語句之後,會確認事務的變化、結束事務。刪除保存點、釋放鎖,當使用commit語句結束事務之後,其它會話將可以查看到事務變化後的新數據。 
      保存點就是爲回退做的。保存點的個數沒有限制。

 

4.  回退事務

     在介紹回退事務前,我們先介紹一下保存點(savepoint)的概念和作用。保存點是事務中的一點。用於取消部分事務,當結束事務時,會自動的刪除該事務所定義的所有保存點。當執行rollback時,通過指定保存點可以回退到指定的點,這裏我們作圖說明。

 

5.  事務的幾個重要操作

(1). 設置保存點 savepoint a 
(2). 取消部分事務 rollback to a 
(3). 取消全部事務 rollback

     這個回退事務,必須是沒有commit前使用的;如果事務提交了,那麼無論你剛纔做了多少個保存點,都統統沒有。如果沒有手動執行commit,而是exit了,那麼會自動提交。

 

6.  java程序中如何使用事務

     在java操作數據庫時,爲了保證數據的一致性,比如賬戶操作(1)從一個賬戶中減掉10$(2)在另一個賬戶上加入10$,我們看看如何使用事務?

[java] view plaincop
  1.   
  2.             // 從scott的sal中減去100  
  3.             sm.executeUpdate("update emp set sal=sal-100 where ename='SCOTT'");  
  4.   
  5.             int i = 7 / 0;  
  6.   
  7.             // 給smith的sal加上100  
  8.             sm.executeUpdate("update emp set sal=sal+100 where ename='SMITH'");  
  9.   
  10.            

運行,會出現異常,查看數據庫,SCOTT的sal減了100,但是SMITH的sal卻不變.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章