在事务中可以根据自己的需要设置保存点。保存点可以设置在事务中的任何地方,也可以设置多个点。这样就可以把比较长的事务根据需要分成较小的段。这样做的好处是当对数据的操作出现问题时可以不用全部回滚,只需要回滚到保存点处即可。例如,在一个事务内前十段数据操作确认准确,而后面的操作没有办法确认,开发人员就可以在第十段操作结束后设置保存点。这样即便后面的操作有误,开发人员也可以利用保存点回滚到第十段处,而不用从头处理。
一旦把事务回滚到某个保存点后,Oracle将把保存点之后持有的锁释放掉,这时前面等待被锁资源的事务就可以继续了。而使事务回滚到保存点,有下列几点需要了解:
①事务只回滚保存点之后的操作。
②回滚到某保存点时,它以后的保存点将被删除,但之前的保存点会被保留。
③保存点之后的锁将被释放,但之前的会被保留。
保存点使用起来非常方便,只需一行脚本就能完成。下面利用例13.2演示事务中如何使用保存点。
【例13.2】 在事务中使用保存点。
在事务中使用保存点,该示例分为如下5个步骤:
①向DEPARTMENTS表增加一条数据,脚本如下,此时隐式事务已经打开。
②执行如下脚本,用于创建保存点,名为FST。
③当保存点创建完成后,继续向DEPARTMENTS表增加一条数据。脚本如下:
④以上3步按顺序创建完成后,查看DEPARTMENTS表数据,如图13.4所示。(www.daowen.com)
图13.4 未提交事务查询结果
图13.4中两处标示即为增加的数据。
⑤回滚到保存点,执行如下脚本,并验证数据。执行过程如图13.5所示。
图13.5 回滚到保存点处数据
从图13.5中可以看出,事务已经成功回滚到保存点处。相信读者看了该示例后对保存点的使用已然了解,但笔者建议不要过分依赖保存点,而应尽量把长的事务操作改成较短的事务操作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。