程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle 9i 事務處理

Oracle 9i 事務處理

編輯:關於Oracle數據庫

  事務是Oracle 9i中進行數據庫操作的基本單位,在PL/SQL程序中,可以使用3個事務處理控制命令。

  commit命令

  commit是事務提交命令。在Oracle 9i數據庫中,為了保證數據的一致性,在內存中將為每個客戶機建立工作區,客戶機對數據庫進行操作處理的事務都在工作區內完成,只有在輸入commit命令後,工作區內的修改內容才寫入到數據庫上,稱為物理寫入,這樣可以保證在任意的客戶機沒有物理提交修改以前,別的客戶機讀取的後台數據庫中的數據是完整的、一致的,如圖9.26所示。

  在【SQLPlus Worksheet】中可以執行下列PL/SQL程序打開自動提交功能。這樣每次執行PL/SQL程序都會自動進行事務提交。執行結果如圖9.27所示。

  ―――――――――――――――――――――――――――――――――――――

  set auto on;

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\setautocommiton.sql。

  相應的,取消自動提交功能的PL/SQL程序如下。

  ―――――――――――――――――――――――――――――――――――――

  set auto off;

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\setautocommitoff.sql。

  rollback命令

  ollback是事務回滾命令,在尚未提交commit命令之前,如果發現delete、insert和update等操作需要恢復的話,可以使用rollback命令回滾到上次commit時的狀態。

  下面以delete命令為例演示如何回滾。

  (1)首先關閉自動提交功能。

  (2)在【SQLPlus Worksheet】中執行下列SQL程序,查看scott.emp數據表中的所有數據,執行結果如圖9.28所示。

  ―――――――――――――――――――――――――――――――――――――

  select * from scott.emp;

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\selectemp.sql。

  (3)在【SQLPlus Worksheet】中執行下列SQL程序,刪除scott.emp數據表中的所有數據。執行結果如圖9.29所示。

  ―――――――――――――――――――――――――――――――――――――

  delete from scott.emp;

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\deleteemp.sql。

  (4)在【SQLPlus Worksheet】中執行下列SQL程序,查詢刪除數據表scott.emp後的結果。執行結果如圖9.30所示。

  ―――――――――――――――――――――――――――――――――――――

  select * from scott.emp;

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\selectemp.sql。

  (5)在【SQLPlus Worksheet】中執行以下SQL程序,完成事務的回滾。執行結果如圖9.31所示。

  ―――――――――――――――――――――――――――――――――――――

  rollback;

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\rollbackemp.sql。

  (5)在【SQLPlus Worksheet】中執行selectemp.sql文件,執行結果如圖9.28所示,表明成功回滾了事務。

  savepoint命令

  savepoint是保存點命令。事務通常由數條命令組成,可以將每個事務劃分成若干個部分進行保存,這樣每次可以回滾每個保存點,而不必回滾整個事務。語法格式如下。

  創建保存點:savepoint 保存點名;

  回滾保存點:rollback to 保存點名;

  下面介紹如何使用保存點。

  (1)在【SQLPlus Worksheet】中執行以下SQL程序,程序完成向scott.emp數據表中插入一條記錄。執行結果如圖9.32所示。

  ―――――――――――――――――――――――――――――――――――――

  insert into scott.emp(empno,ename,sal) values(9000,'wang',2500);

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\insertemp.sql。

  (2)在【SQLPlus Worksheet】中執行下列SQL代碼,完成創建保存點的操作。執行結果如圖9.33所示。

  ―――――――――――――――――――――――――――――――――――――

  savepoint insertpoint;

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\ createsavepoint.sql。

  (3)在【SQLPlus Worksheet】中可以執行其他的SQL語句。

  (4)在【SQLPlus Worksheet】中執行下列SQL代碼,程序完成回滾到指定的保存點“insertpoint”。執行結果如圖9.34所示。

  ―――――――――――――――――――――――――――――――――――――

  rollback to insertpoint;

  ―――――――――――――――――――――――――――――――――――――

  【配套程序位置】:第9章\ rollbacksavepoint.sql。

  (5)可以執行selectemp.sql文件,查詢回滾前後的數據。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved