如何判断一行是否被锁定?

时间:2017-02-27 16:37:05

标签: sql informix 4gl

在INFORMIX中对表行执行select时,如何在不使用“for update”构造的情况下知道当前是否被其他用户锁定?

1 个答案:

答案 0 :(得分:2)

有趣的问题,我很想知道你的动机和这个问题背后的最终目标! 我不相信有一种方法(通过select语句,没有更新)来查明是否在一行上持有共享锁。只有当您的会话尝试修改该行时,您才会发现某个其他会话是否持有共享锁 如果您只想知道行上是否存在独占锁,则可以将会话隔离级别设置为可重复读取。
set isolation to repeatable read; select * from tab1 where col1=1;
以上信息还假定表本身使用行级锁定(默认为页级锁) 注意:可重复读取是最严格的隔离级别。 (https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_0030.htm