|
Oracle事務(wù) 1、 什么是事務(wù) 事務(wù)用于保證數(shù)據(jù)的一致性,它由一組相關(guān)的dml語句組成,該組的dml(數(shù)據(jù)操作語言insert delete update)語句要么全部成功,要么全部失敗。 如:網(wǎng)上轉(zhuǎn)賬就是典型餓要用事務(wù)來處理,用以保證數(shù)據(jù)的一致性。 2、 事務(wù)和鎖 當(dāng)執(zhí)行事務(wù)操作(dml語句),Oracle會在被作用的表上加鎖,防止其他用戶改表表的結(jié)構(gòu),這里對我們用戶來說是非常重要的。 3、 回退事務(wù) 在介紹回退事務(wù)前,先了解一下保存點(savepoint)的概念和作用。保存點是事務(wù)中的一點,用于取消部分事務(wù),當(dāng)結(jié)束事務(wù)時,會自動的刪除該事務(wù)所定義的保存所有點,當(dāng)執(zhí)行rollback時,通過指定保存點可以回退到指定的點這里我們作圖說。 4、 提交事務(wù) 當(dāng)執(zhí)行使用commit語句可以提交事務(wù)。當(dāng)執(zhí)行了commit語句后,會確認(rèn)事務(wù)的變化、結(jié)束事務(wù)、刪除保存點、釋放鎖,當(dāng)使用commit語句結(jié)束事務(wù)后,其它繪畫將可以查看到事務(wù)變化后的新數(shù)據(jù)。 5、 事務(wù)的幾個重要操作 a) 設(shè)置保存點 Savepoint a b) 取消部門事務(wù) Rollback to a c) 取消全部事務(wù) Rollback 6、 java程序中如何使用事務(wù) 在java操作數(shù)據(jù)庫,為了保證數(shù)據(jù)的一致性,比如轉(zhuǎn)賬操作(1)從一個賬戶減掉10元(2)在另一個賬戶上加入10元 Public static void main(String[] args){ //事務(wù)案例 Connection ct=null; Try{ //1、加在驅(qū)動 Class.forName(“oracle.jdbc.driver.OracleDriver”); //得到連接 ct=DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”,”scott”,”tiger”); //從下面開始和sql一樣 //加入事務(wù)處理 Ct.setAutoCommit(false);//設(shè)置不能默認(rèn)提交 Statement sm=ct.createStatement(); Sm.excuteUpdate(“update emp set sal=sal //給smith加100 Sm.executeUpdate(“update emp set sal=sal+100 where ename=’SMITH ”); //關(guān)閉資源 //提交 Ct.commit(); Sm.close(); Ct.close(); }catch(Exception e){ //如果發(fā)生異常,就回滾 Try{ Ct.rollback(); }catch(Exception ex){ Ex.printStackTrace; } e.printStackTrace; } } 7、 只讀事務(wù) 只讀事務(wù)是指只允許執(zhí)行查詢的操作,而不允許執(zhí)行任何其它dml操作的事務(wù),使用只讀事務(wù)可以確保用戶只能取得時間點的數(shù)據(jù),假定機(jī)票代售點每天18點開始統(tǒng)計今天的銷售情況,這是可以使用只讀事務(wù),在設(shè)置了只讀事務(wù)后,盡管其它會話可能會提交新的變化,從而可以保證取得特定時間點的數(shù)據(jù)信息。 設(shè)置只讀事務(wù) Set transaction read only |
|
|