Hi community,
I am learning the transaction of the postgresql, and I try to test using these:


######



terminal 1:



postgres=# select * from t;
 number 
--------
      1
(1 row)

postgres=# update t set number = 2;
UPDATE 1
postgres=# select * from t;
 number 
--------
      2
(1 row)

postgres=# select * from t;
 number 
--------
      2
(1 row)

postgres=# 



######


terminal 2:


postgres=# create table t (number integer);
CREATE TABLE
postgres=# insert into t values (1);
INSERT 0 1
postgres=# begin;
BEGIN
postgres=*# insert into t values (2);
INSERT 0 1
postgres=*# select * from t;
 number 
--------
      2
      2
(2 rows)

postgres=*# rollback;
ROLLBACK



My question is, in my view, the transaction model should make sure that when 
one on-process transaction don't commit itself, the data on this transaction 
shouldn't can be modified by other transaction(I the single-statement also be 
treated as a simple transaction), but why the update works?(I think terminal 1 
will block until the terminal 2's transaction commit or rollback).
Can someone share you opinion to me?
Thanks in advance!


Yours,
Wen Yi

Reply via email to