一、回滚到保留点
- 使用 SAVEPOINT 语句在当前事务中创建保存点。
- 使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。
二、提交或回滚前的数据状态
- 改变前的数据状态是可以恢复的
- 其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
- DML语句所涉及到的行被锁定, 其他用户不能操作。
三、提交后的数据状态
- 数据的改变已经被保存到数据库中。
- 改变前的数据已经丢失。
- 所有用户可以看到结果。
- 锁被释放,其他用户可以操作涉及到的数据。
- 所有保存点被释放。
四、事务实例
- scott用户对employees表进行了更新操作,但没有提交(commit)
- 这时system用户想查询更新获得employees表
select * from scott.employees for update;--但是此时数据库没有反应
- 必须等到scott用户对employees表进行了提交操作,这条Sql语句才会执行。