事务控制命令命令
COMMIT
ROLLBACK
SAVEPOINT
SET TRANSACTION
当第一条可执行的SQL语句开始执行,数据库事务就开始。
随着下面任一事件发生,数据库事务结束:
执行COMMIT或 ROLLBACK
执行DDL或DCL命令(自动提交)
用户退出
系统崩溃 System crashes
在执行COMMIT或ROLLBACK命令之前的数据状态(使用DML操纵数据):
数据够被恢复到改变前状态。
当前用户能够查询到使用DML操作的结果。
其它用户不能查询到当前用户使用DML操作的结果。
其它用户不能改变由当前用户锁定的行。
在执行COMMIT命令之后的数据状态(使用DML操纵数据):
改变的数据被永久保存到数据库中。
数据以前的状态永久丢失。
所有用户能查询到使用DML操作的结果。
锁定的行被释放
所有的保存点被释放。
SQL> UPDATE emp
2 SET deptno = 10
3 WHERE empno = 7782;
1 row updated.
SQL> COMMIT;
Commit complete.
在执行ROLLBACK命令之后的数据状态(使用DML操纵数据):
数据的改变被撤销。
数据恢复到以前的状态。
锁定的行被释放。
SQL> DELETE FROM employee;
14 rows deleted.
SQL> ROLLBACK;
Rollback complete.
在当前事务内使用SAVEPOINT语句创建一标识
使用ROLLBACK TO SAVEPOINT语句回退到标识处
SQL> UPDATE...
SQL> SAVEPOINT update_done;
Savepoint created.
SQL> INSERT...
SQL> ROLLBACK TO update_done;
Rollback complete.
SET TRANSACTION语句:强制当前事务为整个事务内的所有SQL命令使用指定的回滚段。
SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment_name;