我有一个包含订单号和订单状态的表(进行中、取消、准备就绪)。我需要编写一个查询,返回状态为ready\u for \u proc的任何单个字符串。问题是这个查询将由多个线程执行。每个人都应该得到一个还没有被其他线程处理过的记录(没有重复的记录) SELECT FOR UPDATE skip locked 以及 rownum=1 ,但除一个查询外,所有执行的查询都返回空(如果第一个线程长时间阻塞记录)。如何编写这样的查询?如果重要的话我会用oracle
SELECT FOR UPDATE skip locked
rownum=1
3ks5zfa01#
稍微更改跳过锁定以执行以下操作:
cursor C is SELECT ... FROM ... FOR UPDATE SKIP LOCKED
在你的代码里,你只需要
FETCH C INTO ...
是rownum=1导致了您的问题。
1条答案
按热度按时间3ks5zfa01#
稍微更改跳过锁定以执行以下操作:
在你的代码里,你只需要
是rownum=1导致了您的问题。