Oo烟花火 发表于 2012-02-27 16:34

求助!!如何在informix设置跟ORACLE的for update nowait一样的锁?

最近项目在做ORALCE到informix的迁移
碰到这个问题很棘手:
informix不支持For UPADTE NOWAIT

小弟找遍了各种资料,就是没法做到跟 For UPADTE NOWAIT一样的效果,不知道有哪位大虾能指点一下?

hugolin168 发表于 2012-02-27 16:42

SET LOCK MODE TO NOT WAIT;

Oo烟花火 发表于 2012-02-27 18:56



我在建表的时候已经制定了lock mode row

但是还是不知道如何实现只锁select出来的语句。迷茫中

yulihua49 发表于 2012-06-09 19:44

本帖最后由 yulihua49 于 2012-06-09 19:53 编辑

Oo烟花火 发表于 2012-02-27 18:56 static/image/common/back.gif
我在建表的时候已经制定了lock mode row

但是还是不知道如何实现只锁select出来的语句。迷茫中
for update是可以用的。不等锁见楼上。

附加一点,行级锁的操作,INFORMIX比ORACLE有很多优势的。
ORACLE 6.0的时候,还声明行级锁不可行,没必要。那时的INFORMIX早已提供了高效,可靠的行级锁操作了。
这是我们当年选择INFOMIX而不选择ORACLE的重要原因。

ORA至今不支持SKIP LOCKED操作(跳过被锁记录)(10G以前支持过,但操作逻辑不正确,11G取消了)。
INFORMIX这个是独门绝技。

yulihua49 发表于 2012-06-09 19:56

本帖最后由 yulihua49 于 2012-06-09 20:00 编辑

Oo烟花火 发表于 2012-02-27 18:56 static/image/common/back.gif
我在建表的时候已经制定了lock mode row

但是还是不知道如何实现只锁select出来的语句。迷茫中
这个是设置行锁。必须的。
select就是用for update,但对于单条语句无效,一定要开游标。
配合隔离级,可以实现读锁,写锁,锁全部活动集,或只锁当前游标指向的记录。(此时两次FETCH就可以跳过被锁的记录)。
不能用滚动游标。
页: [1]
查看完整版本: 求助!!如何在informix设置跟ORACLE的for update nowait一样的锁?