【发布时间】:2017-02-27 16:37:05
【问题描述】:
在 INFORMIX 中对表行进行选择时,如果不使用“for update”构造,如何知道它当前是否被另一个用户锁定?
【问题讨论】:
在 INFORMIX 中对表行进行选择时,如果不使用“for update”构造,如何知道它当前是否被另一个用户锁定?
【问题讨论】:
有趣的问题,我很想知道您提出这个问题的动机和最终目标!
我不相信有一种方法(通过 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)
【讨论】: