Tom Lane 写道:
>weiping he <laser@qmail.zhengmai.net.cn> writes:
>
>
>>txn1: txn2:
>>begin; begin;
>>update table_a set col= col + 1; update table_a set col = col + 1;
>>end; end;
>>
>>
>
>
>
>>if two transaction begin at exact the same time,
>>what's the result of 'col' after both transactions committed
>>in Read committed level? it's 3 or 2?
>>My understanding is the result is 3,
>>
>>
>
>If the second xact to lock the row is READ COMMITTED, you get 3.
>If it's SERIALIZABLE you get an error. In no case will you silently
>lose an update.
>
>
dose is mean that I must use some kind of lock ( ... FOR UPDATE for example)
to lock that row to get the result 3 in READ COMMITTED level? My
understanding
is even in MVCC environment, the update action would still be executed
sequencly
(by means of some kind of lock).
What confused me is: in MVCC environment, what's the procedure of
postgresql to
use lock when two transaction update to the same row at the same time?
thanks you.
Laser