Actual row order in UPDATE and SELECT FOR UPDATE

From: Nikolai Zhubr <n-a-zhubr(at)yandex(dot)ru>
To: pgsql-general(at)postgresql(dot)org
Subject: Actual row order in UPDATE and SELECT FOR UPDATE
Date: 2016-02-15 22:17:52
Message-ID: 56C24E90.1030806@yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello all,

I can't find any clear description of how to reliably figure and/or
enforce specific row (locking) order within UPDATE and SELECT FOR UPDATE
statements dealing with multiple rows.
I'd like to get rid of some deadlocks (caused by share locks). While the
manual explains locks and deadlocks themselves pretty fine (in e.g.
http://www.postgresql.org/docs/9.5/static/explicit-locking.html
) it somehow avoids discussing multi-row updates there. On the other
hand, the UPDATE section of the manual somehow avoids discussing actual
update order and respective locking too.
So is it defined anywhere explicitely? Or do I rather have to convert
all multi-row UPDATE statements into single-row updates and then wrap
them into e.g. plpgsql loops? That would look quite strange...
Any hints?

Thank you,
Nikolai

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2016-02-15 22:27:09 Re: Actual row order in UPDATE and SELECT FOR UPDATE
Previous Message Chris Mair 2016-02-15 22:02:22 Re: Trouble installing PostGIS on Amazon Linux server