Tom Lane дµÀ:

weiping he <[EMAIL PROTECTED]> 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

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to