Re: Question Regarding Locks
От | Tom Lane |
---|---|
Тема | Re: Question Regarding Locks |
Дата | |
Msg-id | 3126.1098983241@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Question Regarding Locks (Karsten Hilbert <Karsten.Hilbert@gmx.net>) |
Ответы |
Re: Question Regarding Locks
|
Список | pgsql-general |
Karsten Hilbert <Karsten.Hilbert@gmx.net> writes: > Just so that I am not getting this wrong: >> BTW, a handy proxy for "row has not changed" is to see if its XMIN >> system column is still the same as before. > Considering that my business objects remember XMIN from when > they first got the row would the following sequence make sure > I am in good shape ? > begin; > select ... for update; > update ... set ... where > my_pk=<my_pk_value> > AND > xmin=<the_old_xmin> > This should either update 1 row in which case I can commit or > zero rows in which case I need to rollback and handle the merge > conflict. The reasoning would be that the condition > my_pk=my_pk_value would select the row I am interested in > while xmin=the_old_xmin would ensure that row hasn't been > modified. > Am I right or is there a flaw in my thinking ? I think you can skip the SELECT FOR UPDATE altogether if you do it that way. Otherwise it looks fine. regards, tom lane
В списке pgsql-general по дате отправления: