事務是 Oracle 9i 數據庫操作的基本單位,PL/SQL 程序中通過 COMMIT、ROLLBACK、SAVEPOINT 三大命令實現事務控制,保障數據一致性與完整性。
Oracle 採用工作區機制:客戶端操作先在內存工作區完成,只有執行 COMMIT 才將變更物理寫入數據文件,確保未提交前其他會話讀取到的一致性數據。

-- 開啟自動提交 SET AUTO ON; -- 關閉自動提交 SET AUTO OFF;
對應腳本:第9章\setautocommiton.sql、setautocommitoff.sql。執行效果見圖。

演示場景:關閉自動提交 → 查詢 scott.emp 全表 → 刪除所有記錄 → 再次查詢確認數據為空 → 執行 ROLLBACK → 最終查詢驗證數據恢復。
SET AUTO OFF;SELECT * FROM scott.emp;(圖9.28)DELETE FROM scott.emp;(圖9.29)SELECT * FROM scott.emp; 顯示無數據(圖9.30)ROLLBACK;(圖9.31)相關腳本:selectemp.sql、deleteemp.sql、rollbackemp.sql。

將長事務劃分為多個階段,每階段設保存點,發生錯誤時可回滾至最近保存點而非整個事務。
INSERT INTO scott.emp(empno,ename,sal) VALUES(9000,'wang',2500);(圖9.32)SAVEPOINT insertpoint;(圖9.33)ROLLBACK TO insertpoint;(圖9.34)腳本:insertemp.sql、createsavepoint.sql、rollbacksavepoint.sql。

SAVEPOINT 細化回滾粒度。ROLLBACK 避免髒數據殘留。