回滾後如何保持資源上的鎖?


當任何應用程式使用表、表空間等資源時,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 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告