SQL 执行期间 COBOL-DB2 程序中表级锁的实现

DB2 中的锁是在表和表空间上获取的,以避免由于 LOST UPDATE、DIRTY READ 和 PHANTOM 引起的问题。

我们需要在 BIND 包/计划步骤期间使用 ACQUIRE 选项定义锁定参数。

一个 COBOL-DB2 程序 PROGA 正在使用 SQL 语句来访问表 TA。如果我们只在程序中执行特定的 SQL 语句时才需要在表上加锁,那么我们需要定义 BIND JCL 步骤如下:

//BIND EXEC PGM=IKJEFT01
//STEPLIB DD DSN=DIS.TEST.LOADLIB,DISP=SHR
//系统输出 DD 系统输出=*
//SYSTSIN DD *
DSN SYSTEM(TB3)
BIND PLAN(PLANA) -
PKLIST(PACKA) -
ACQUIRE(USE) -
/*

选项 ACQUIRE 必须与 BIND PLAN 步骤中的 USE 参数一起使用。当在程序中执行使用该表的 SQL 语句时,这将指示 DB2 将锁放在 DB2 表上。

猜你喜欢