My question about the transaction

From: Wen Yi <wen-yi(at)qq(dot)com>
To: pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: My question about the transaction
Date: 2023-10-19 11:36:26
Message-ID: tencent_9534EB34569D4C532043E39EDC7AA40B5D09@qq.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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;
&nbsp;number
--------
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1
(1 row)

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

postgres=# select * from t;
&nbsp;number
--------
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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;
&nbsp;number
--------
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Sebastien Flaesch 2023-10-19 12:08:17 Re: Build fails on RHEL 8.8 about libxml2 version
Previous Message Tomek 2023-10-19 09:47:21 Re: How can I accurately infer the output of a SELECT statement FROM a table with floating-point data type?