ROLLBACK:事务处理回退:
数据回滚:在Oracle中,ROLLBACK语句可以用来撤销当前事务或有问题的事务,使数据变化失效,修改前的数据状态被恢复。
当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。
例:使用ROLLBACK语句在Oracle中发出回滚,数据改变被取消。

ROLLBACK其实就是COMMIT的逆操作:
- 撤销已做的所有修改。其完成方式如下:如果先前插入了一行,ROLLBACK会将其删除。如果更新了一行,回滚就会取消更新。如果删除了一行,回滚将把它再次插入。
- 会话持有的所有锁都将释放,如果有人在排队等待我们持有的锁,就会被唤醒。
- 与此不同,COMMIT只是将重做日志缓冲区中剩余的数据刷新到磁盘,与ROLLBACK相比,COMMIT完成的工作非常少。
使用COMMIT 和 ROLLBACK语句的优点:
- 确保数据完整性。
- 数据改变被提交之前预览。
- 将逻辑上相关的操作分组。
语句自动提交:
不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。会话异常结束或系统异常会导致自动回滚。
提交或回滚前的数据状态:
- 改变前的数据状态是可以恢复的
- 执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正
- 其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
- DML语句所涉及到的行被锁定, 其他用户不能操作。
提交后的数据状态:
- 数据的改变已经被保存到数据库中。
- 改变前的数据已经丢失。
- 所有用户可以看到结果。
- 锁被释放,其他用户可以操作涉及到的数据。
- 所有保存点被释放。
SAVEPOINT:设置保存点:
保存点:使用 SAVEPOINT 语句在当前事务中创建保存点。
回滚:使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。
Oracle的ROLLBACK语句用于撤销当前事务中的数据修改,恢复到事务开始前的状态。它利用回滚段中的数据前影像进行操作。COMMIT则是提交事务,将修改永久保存。使用COMMIT和ROLLBACK可以保证数据完整性并分组逻辑操作。SAVEPOINT允许在事务中设置保存点,方便部分回滚。

2105

被折叠的 条评论
为什么被折叠?



