我正在为分布式消息开发Oracle表。我有一个表,如下所示:Oracle查询更新和返回更新行
TABLE messages
messageid VARCHAR(15)
pulltime DATETIME
attempt NUMBER(100)
当消息消费者查询的消息,我想尝试更新pulltime *小时递增尝试号码:
UPDATE messages
SET pulltime = SYSDATE + attempt/24, attempt = attempt + 1
WHERE pulltime < SYSDATE;
同时,无论更新什么,我也想查询它并将行返回给我的应用程序,以处理消息。由于有多个消费者,我希望能够更新准备处理的消息,并更新他们的pulltime以锁定其他消费者使用相同的消息,直到一次操作中的下一个pulltime(如果消息成功消费,我们将使用单独的命令从表中删除条目)。
编辑:消费应用程序将是一个Java应用程序,我希望所有的列返回(messageid,pulltime和尝试)。
消息如何查询消息?这是在pl/sql函数还是程序里面? – Hawk
它将通过Java应用程序。 – VerticalEvent