Durumdara wrote:
>Two table:
>Main
>Lookup
>
>The query is:
>select Main.*, Lookup.Name
>left join Lookup on (Main.Type_ID = Lookup.ID)
hat's not correct SQL, but I think I understand what you mean.
>Lookup:
>ID Name
>1 Value1
>2 Value 2
>3 Value 3
>
>Many records is in Main table (for example 1 million).
>
>What happens in this case (C = connection):
>
>C1.) begin read committed
>C1.) starting this query
>C1.) query running
>C2.) begin read committed
>C2.) update Lookup set Name = "New2" where ID = 2
>C2.) commit
>C1.) query running
>C1.) query finished
>
>Is it possible to the first joins (before C2 modifications) are
>containing "Value2" on the beginning of the query and "New2" on the
>end of the query?
>So is it possible to the long query is containing not consistent state
>because of C2's changing? For example mixing "Value2" and "New2"?
No, this is not possible.
See
http://www.postgresql.org/docs/current/static/transaction-iso.html#XACT-
READ-COMMITTED :
When a transaction uses this [read committed] isolation level, a
SELECT query
(without a FOR UPDATE/SHARE clause) sees only data committed before
the query began;
it never sees either uncommitted data or changes committed during
query execution
by concurrent transactions.
Yours,
Laurenz Albe