Re: Q about transactions

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Ben-Nes Michael" <miki(at)canaan(dot)co(dot)il>
Cc: "Bruno Wolff III" <bruno(at)wolff(dot)to>, "postgresql" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Q about transactions
Date: 2003-04-14 14:10:13
Message-ID: 7488.1050329413@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

"Ben-Nes Michael" <miki(at)canaan(dot)co(dot)il> writes:
> When I want to insert a branch to the tree I need:
> 1. select lft, rgt from the table to find where to insert
> 2. using update I open a gap in the tree ( offset all the lft, rgt above the
> location by two )
> 3. using insert I add a new branch.

> so "select for updates" seem inappropriate as I select only one row as I
> understood it lock only this row.
> Read Committed is also bad as if the second transaction will use select
> before the first transaction ran the update the select will be useless.
> so it seems that Serializable isolation is the solution, or am I wrong ?

Yeah. Use serializable mode, and be prepared to cope with "can't
serialize" errors (a retry loop around the whole transaction is the
standard answer to that).

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message scott.marlowe 2003-04-14 15:17:41 Re: Index information and log disable...
Previous Message Bob Kline 2003-04-14 12:22:53 Re: Upgrade to Red Hat Linux 9 broke PostgreSQL