如何判断一行是否被锁定?
How to tell if a row is locked?
当在 INFORMIX 中对 table 行执行 select 时,如果不使用 "for update" 构造,您如何知道它当前是否被另一个用户锁定?
有趣的问题,我很想知道你提出这个问题的动机和最终目标!
我不相信有一种方法(通过 select 语句,无需更新)来查明是否有一个共享锁在一行上持有。只有当您的会话尝试修改该行时,您才会发现其他会话是否持有共享锁。
如果你只是想知道某行是否持有独占锁,那么你可以将会话隔离级别设置为 repeatable read.
set isolation to repeatable read;
select * from tab1 where col1=1;
以上信息还假设table本身使用行级锁(默认是页级锁)。
注意:Repeatable Read 是最严格的隔离级别。 (https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_0030.htm)
当在 INFORMIX 中对 table 行执行 select 时,如果不使用 "for update" 构造,您如何知道它当前是否被另一个用户锁定?
有趣的问题,我很想知道你提出这个问题的动机和最终目标!
我不相信有一种方法(通过 select 语句,无需更新)来查明是否有一个共享锁在一行上持有。只有当您的会话尝试修改该行时,您才会发现其他会话是否持有共享锁。
如果你只是想知道某行是否持有独占锁,那么你可以将会话隔离级别设置为 repeatable read.
set isolation to repeatable read;
select * from tab1 where col1=1;
以上信息还假设table本身使用行级锁(默认是页级锁)。
注意:Repeatable Read 是最严格的隔离级别。 (https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_0030.htm)