在INFORMIX中对表行执行select时,如何在不使用“for update”构造的情况下知道当前是否被其他用户锁定?
答案 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)