1

在 INFORMIX 中对表行进行选择时,您如何知道它当前是否被另一个用户锁定而不使用“for update”构造?

4

1 回答 1

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

于 2017-02-27T18:00:07.497 回答