在 informix 中设置锁定模式以在执行查询之前等待

Setting lock mode in informix to wait before executing query

在我的 vb 应用程序中,我有一个更新 table 中的一列的查询。 但是因为这个数据库锁模式的 属性 是

SET LOCK MODE TO NOT WAIT

有时当 运行 查询更新时,我会得到这样的错误:

SQL ERR: EIX000: (-144) ISAM error: key value locked
EIX000: (-245) Could not position within a file via an index. (informix.table1)

我的问题是,执行是否安全:

1st SET LOCK MODE TO WAIT;

 2nd the update query;

 3rd SET LOCK MODE TO NOT WAIT;

或者,如果这不安全,您可以向我指出其他解决方案

按提示做三个操作是"safe",但是...

  • 您的应用程序可能会在操作运行时无限期阻塞。
  • 如果您以某种方式终止查询但不重置锁定模式,您代码的其他部分可能会意外地挂在锁上。

考虑超时等待是否合适。

每个线程(如果有线程)在三个操作期间都应该独占访问一个连接。