php MYSQL GET_LOCK DB2等效语句

oalqel3c  于 2023-01-12  发布在  PHP
关注(0)|答案(1)|浏览(111)

我正在尝试将MySql语句转换为IBM DB2。
我查询MySql数据库(使用PDO查询)

"SELECT GET LOCK(lockname,timeout)"

这样我就能检查锁是否开启,打开它.

if ($result === true)
{
   $this->locker->unlock($lockname);
}

然后在“解锁”

"SELECT RELEASE_LOCK(lockname);"

我不太明白如何使用MON_GET_LOCKS这样的操作。

h22fl7wq

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持有这些锁作为行。

相关问题