Oracle 事务
1. 数据库事务
1.事务是由完成若干项工作的DML语句组成
2.数据库事务是由以下的部分组成
- 一个或者多个DML语句
- 一个DDL语句
- 一个DLC语句
3.数据库事务的开始结束
以第一个DML语句的执行为开始
以下面的其中之一作为结束
- COMMIT或者ROLLBACK语句
- DLL或者DCL语句(自动提交)
- 系统崩溃
2. 保存点
使用SAVEPOINT语句在当前事务中创建保存点
使用ROLLBACK TO SAVEPOINT语句回滚到创建的保存点
3. 隐式事务处理
自动提交在以下的情况中执行
- DDL语句
- DCL语句
- 不使用COMMIT或者ROLLBACK语句提交或者回滚,正常会回滚会话
- 会话异常结束或者系统异常会导致自动回滚
3.1 提交或回滚前的数据状态
- 改变前的数据状态是可以恢复的
- 执行DML操作的用户可以通过SELECT语句查询之前的修正
- 其他用户不能看到当前用户所做的提交,只能当前用户结束事务才能被看见
- DML语句所涉及到的行被锁定,其他用户不能操作
3.2 COMMIT后的数据状态
- 数据的改变被保存在数据库中
- 以前的数据被覆盖
- 所有用户都可以查看结果
- 受影响的行上的锁被释放,可供其他用户来操作的那些行。
- 所有的保存点都将被删除
3.3 语句级回滚
- 单独的DML语句执行失败时,只有该语句被回滚
- Oracle服务器自动创建一个隐式的保留点
- 其他数据改变仍被保留
- 用户应执行COMMIT或者ROLLBACK语句结束事务
4. 读一致性
- 读一致性为数据提供一个一致的试图
- 一个用户对数据的改变不会影响其他用户的改变
- 对于相同的数据读一致性保证
- 查询不等待修改
- 修改不能带查询
- 修改等待修改