如何在查询中获得一行select for update

epggiuax  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(302)

我有一个包含订单号和订单状态的表(进行中、取消、准备就绪)。我需要编写一个查询,返回状态为ready\u for \u proc的任何单个字符串。问题是这个查询将由多个线程执行。每个人都应该得到一个还没有被其他线程处理过的记录(没有重复的记录) SELECT FOR UPDATE skip locked 以及 rownum=1 ,但除一个查询外,所有执行的查询都返回空(如果第一个线程长时间阻塞记录)。如何编写这样的查询?如果重要的话我会用oracle

3ks5zfa0

3ks5zfa01#

稍微更改跳过锁定以执行以下操作:

cursor C is SELECT ... FROM ... FOR UPDATE SKIP LOCKED

在你的代码里,你只需要

FETCH C INTO ...

是rownum=1导致了您的问题。

相关问题