My question about the transaction
От | Wen Yi |
---|---|
Тема | My question about the transaction |
Дата | |
Msg-id | tencent_9534EB34569D4C532043E39EDC7AA40B5D09@qq.com обсуждение исходный текст |
Ответы |
Re: My question about the transaction
Re: My question about the transaction Re: My question about the transaction |
Список | pgsql-general |
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=#
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
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
В списке pgsql-general по дате отправления: