事务控制概述
- 事务:一组相关操作组合,要么全部成功、要么全部失败的逻辑工作单元。
- 不论发生何种情况,必须保证事务能正确、完整地执行。
- DBS运行的最小逻辑工作单元是“事务”,所有对数据库的操作,都要以事务作为一个整体单位来执行或撤销。
- 事务必须满足的ACID属性:
1.原子性:不可分割
2.一致性:数据一致状态
3.隔离性:避免并发事务相互干扰
4.持久性:事务正常结束,数据修改是持久的
事务的开始和组成
数据库事务组成
-
0~n条DML语句
-
1条DDL语句
-
1条DCL语句
事务开始于第一条可执行语句
事务结束于: -
遇到commit或rollback语句
-
遇到DDL或DCL语句
-
用户会话结束
-
系统奔溃
事务的提交
提交和回滚操作是为了更好地保证数据的一致性
提交事务就是结束当前事务地运行并确定其所做的数据修改,使用COMMIT指令实现事务地提交。
下述情况下事务会被自动提交
- 执行一个DDL语句
- 执行一个DCL语句
- 正常结束会话
会话异常终止/系统奔溃时事务会被自动回滚
提交/回滚前数据状态
- 当前事务中数据状态的改变是可以恢复的
- 当前事务中的DML操作结果只对当前用户可见,其他用户看不到当前事务结束
- 当前事务中DML语句所涉及到的数据表被锁定,在此期间其他用户不允许修改表的结构
事务提交后数据状态
- 事务中对数据的修改永久生效、不可再撤销
- 数据修改之前的状态永久性丢失、不可恢复
- 所有用户都将看到操作后的结果
- 事务中的保存点被清除
SQL PLUS的自动提交
SQL PLUS中执行SQL语句时可以设置是否自动提交,缺省设置为非自动提交
查看设置:
SHOW AUTOCOMMIT;
改变设置
SET AUTOCOMMIT ON;--设置为自动提交
SET AUTOCOMMIT OFF;--设置为非自动提交
回滚事务
ROLLBACK指令可以修改实现事务的回滚——撤销
当前事务所做的数据修改,使数据恢复到事务开始之前的状态,并释放相关的记录锁和表级锁