回滚后如何保持资源上的锁?


当任何应用程序使用表、表空间等资源时,DB2 会在这些资源上放置锁。在 COBOL-DB2 程序中,如果我们正在修改或删除表中的数据,则 DB2 会放置锁。当我们使用 ROLLBACK 语句来恢复数据库中所做的更改时,DB2 保持的所有锁都会默认释放。

如果我们希望即使在回滚后也能保持对资源的锁定,则必须使用 ON ROLLBACK RETAIN LOCKS 代替 ROLLBACK。

例如,考虑一个使用 FOR UPDATE OF 子句声明的游标 ORDER_CUR。因此,一旦游标打开,就会获取所有限定行的锁。


在上述流程中,我们使用了“SAVEPOINT A ON ROLLBACK RETAIN LOCKS”。因此,当 ORDER_CUR 打开时,在限定行上放置的锁在回滚将数据库状态恢复到保存点 A 后不会被释放。

更新于:2020年11月30日

211 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.