首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 9i 事務處理核心機制:COMMIT、ROLLBACK 與 SAVEPOINT 實戰詳解

     編輯:Oracle 資料庫相關知識

事務處理概述

事務是 Oracle 9i 數據庫操作的基本單位,PL/SQL 程序中通過 COMMIT、ROLLBACK、SAVEPOINT 三大命令實現事務控制,保障數據一致性與完整性。

COMMIT:事務提交與自動提交模式

Oracle 採用工作區機制:客戶端操作先在內存工作區完成,只有執行 COMMIT 才將變更物理寫入數據文件,確保未提交前其他會話讀取到的一致性數據。

啟用/關閉自動提交

-- 開啟自動提交
SET AUTO ON;
-- 關閉自動提交
SET AUTO OFF;

對應腳本:第9章\setautocommiton.sql、setautocommitoff.sql。執行效果見圖。

ROLLBACK:事務回滾實戰

演示場景:關閉自動提交 → 查詢 scott.emp 全表 → 刪除所有記錄 → 再次查詢確認數據為空 → 執行 ROLLBACK → 最終查詢驗證數據恢復。

  1. SET AUTO OFF;
  2. SELECT * FROM scott.emp;(圖9.28)
  3. DELETE FROM scott.emp;(圖9.29)
  4. SELECT * FROM scott.emp; 顯示無數據(圖9.30)
  5. ROLLBACK;(圖9.31)
  6. 再次查詢確認數據回滾成功(圖9.28)

相關腳本:selectemp.sql、deleteemp.sql、rollbackemp.sql。

SAVEPOINT:保存點與部分回滾

將長事務劃分為多個階段,每階段設保存點,發生錯誤時可回滾至最近保存點而非整個事務。

  1. 插入測試記錄:INSERT INTO scott.emp(empno,ename,sal) VALUES(9000,'wang',2500);(圖9.32)
  2. 創建保存點:SAVEPOINT insertpoint;(圖9.33)
  3. 執行其他 DML 操作…
  4. 回滾至保存點:ROLLBACK TO insertpoint;(圖9.34)
  5. 驗證數據狀態

腳本:insertemp.sql、createsavepoint.sql、rollbacksavepoint.sql。

最佳實踐建議

  • 默認關閉自動提交,由應用顯式控制事務邊界。
  • 長業務流程務必使用 SAVEPOINT 細化回滾粒度。
  • 異常處理塊中必須包含 ROLLBACK 避免髒數據殘留。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved