By default, psql is configured with autocommit on.
Use another administrator, like phpadmin, and configure the connection with autocommit off.
Atte
JRBM
El jue, 19 oct 2023 a las 11:49, Wen Yi (<wen-yi@qq.com>) escribió:
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).