Re: An example needed for Serializable conflict... - Mailing list pgsql-general

From Albe Laurenz
Subject Re: An example needed for Serializable conflict...
Date
Msg-id D960CB61B694CF459DCFB4B0128514C202FF66AD@exadv11.host.magwien.gv.at
Whole thread Raw
In response to An example needed for Serializable conflict...  (Durumdara <durumdara@gmail.com>)
Responses Re: An example needed for Serializable conflict...
List pgsql-general
Durumdara wrote:
> Please send me an example (pseudo-code) for Serializable conflict.
> And I wanna know, if possible, that if more transactions only
> read the tables in Serializable mode, and one or others write
> to it, can I got some conflicts in read operation?

You get a serialization conflict if you try to modify a row
in a serializable transaction T1 that has been changed by a second
transaction T2 after T1 started.

Sample 1:

T1: START TRANSACTION ISOLATION LEVEL SERIALIZABLE;

T1: SELECT * FROM t;
 id | val
----+------
  1 | test
(1 row)

T2: DELETE FROM t WHERE id=1;

T1: UPDATE t SET val='new' WHERE id=1;
ERROR:  could not serialize access due to concurrent update

Sample 2:

T1: START TRANSACTION ISOLATION LEVEL SERIALIZABLE;

T1: SELECT * FROM t;
 id | val
----+------
  1 | test
(1 row)

T2: UPDATE t SET val=val WHERE id=1;

T1: DELETE FROM t;
ERROR:  could not serialize access due to concurrent update


Yours,
Laurenz Albe

pgsql-general by date:

Previous
From: "Albe Laurenz"
Date:
Subject: Re: Efficiently move data from one table to another, with FK constraints?
Next
From: "Daniel Verite"
Date:
Subject: Re: Feistel cipher, shorter string and hex to int