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!