我正在尝试将MySql语句转换为IBM DB2。我查询MySql数据库(使用PDO查询)
"SELECT GET LOCK(lockname,timeout)"
这样我就能检查锁是否开启,打开它.
if ($result === true) { $this->locker->unlock($lockname); }
然后在“解锁”
"SELECT RELEASE_LOCK(lockname);"
我不太明白如何使用MON_GET_LOCKS这样的操作。
h22fl7wq1#
有人试图用DBMS_LOCK module实现一些类似的方法。但似乎至少在Db2 11.5.7中存在一些实现bug:当您从第二个会话运行与上面链接示例中完全相同的复合语句时,DBMS_LOCK.REQUEST函数调用返回以下错误,并且在第一个会话中没有释放相同的锁。
DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0206N "TIMEOUT" is not valid in the context where it is used. SQLSTATE=42703
所以,如果你想实现类似的东西,你可以自己做,看起来,算法是基于表SYSTOOLS.DBMS_LOCK_DET持有这些锁作为行。
SYSTOOLS.DBMS_LOCK_DET
1条答案
按热度按时间h22fl7wq1#
有人试图用DBMS_LOCK module实现一些类似的方法。
但似乎至少在Db2 11.5.7中存在一些实现bug:
当您从第二个会话运行与上面链接示例中完全相同的复合语句时,DBMS_LOCK.REQUEST函数调用返回以下错误,并且在第一个会话中没有释放相同的锁。
所以,如果你想实现类似的东西,你可以自己做,看起来,算法是基于表
SYSTOOLS.DBMS_LOCK_DET
持有这些锁作为行。