| From: | Joe Carr <joe(dot)carr(at)gmail(dot)com> |
|---|---|
| To: | pgsql-sql(at)postgresql(dot)org |
| Subject: | Correct usage of FOR UPDATE? |
| Date: | 2010-12-09 19:29:42 |
| Message-ID: | AANLkTin1qX+ZSOGsvdY7RH0dkTEkxth-XaAy2DSA8HTd@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
Hello,
I have a simple table-based queue system, and I'd looking for some advice on
improving my dequeue function. it boils down to:
SELECT id
FROM queue
WHERE <whereclause>
FOR UPDATE NOWAIT;
which works well, in that no item gets dequeued more that once. The issue,
however is that when a contention occurs, the error "could not obtain lock
on row in relation" is raised.
Is there a way that I can rewrite this so that when a contention occurs,
there is no error? I would like the "winning" process to lock the row, and
the "losing" process to select null rather than raise the rowlock error.
thanks beforehand for any help!
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tony Capobianco | 2010-12-09 21:47:55 | sqlplus reporting equivalent in postgres? |
| Previous Message | Dmitriy Igrishin | 2010-12-09 18:24:21 | Extended query protocol and exact types matches. |