兩次連續成功的 COMMIT 或 ROLLBACK 之間的操作序列。事務內修改原子提交或撤銷,故障時自動回滾。
SELECT/INSERT/UPDATE/DELETE/MERGE):產生事務,修改緩存在 Undo 段,COMMIT 確認前其他會話不可見。CREATE/ALTER/DROP/TRUNCATE):隱式提交 當前事務,再執行 DDL,再隱式提交。GRANT/REVOKE):同 DDL,隱式提交。結論:只有 DML 可構建事務,DDL/DCL 會強制切斷事務邊界。
UPDATE accounts SET bal=bal-1000 WHERE id='A')。UPDATE accounts SET bal=bal+1000 WHERE id='B')。COMMIT 後其他會話才能查見新餘額,實現讀一致性 (Statement-Level Read Consistency)。COMMIT (SCN 推進、釋放鎖、LGWR 寫入提交標記) / ROLLBACK (應用 Undo 還原) / DDL/DCL 隱式提交 / 會話異常中斷 (PMON 清理回滾)。| 語句 | 作用 |
|---|---|
| COMMIT | 永久確認當前事務所有修改 |
| ROLLBACK | 撤銷當前事務所有修改 |
| SAVEPOINT name | 設置保存點,後續可 ROLLBACK TO name 部分回滾 |
UPDATE accounts SET bal=bal-100 WHERE id='A';
SAVEPOINT before_B;
UPDATE accounts SET bal=bal+100 WHERE id='B';
-- 發現 B 賬戶狀態異常
ROLLBACK TO before_B; -- 僅撤銷 B 存入,A 扣款保留
COMMIT; -- 最終確認 A 扣款
SET AUTOCOMMIT ON (默認 OFF)。SET AUTOCOMMIT ON; -- 之後每條 DML 即時提交,無法 ROLLBACK
SET AUTOCOMMIT OFF; -- 恢復手動控制 (推薦生產環境默認)