From: Ragnar <gnari@hive.is>
To: Ash Grove <ash_grv7@yahoo.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: is an explicit lock necessary?
Date: Thu, 04 May 2006 18:59:58 +0000
Message-ID: <1146769198.31874.3.camel@localhost.localdomain> (raw)
In-Reply-To: <20060504181056.14509.qmail@web52510.mail.yahoo.com>
References: <20060504181056.14509.qmail@web52510.mail.yahoo.com>
On fim, 2006-05-04 at 11:10 -0700, Ash Grove wrote:
> Hi,
>
> Does beginning a transaction put locks on the tables
> queried within the transaction?
>
> In the example below, is #2 necessary? My thought was
> that I would need to use an explicit lock to make sure
> that the sequence value I'm selecting in #4 is the
> same one that is generated from #3. I'm worried about
> another instance of the application doing an insert on
> table1 between #3 and #4.
>
> 1) From my app, I turn off autocommit.
> 2) I lock table1 in access exclusive mode
> 3) I do an insert into table1 which generates a
> primary key via nextval on sequence1
> 4) I grab grab the primary key value via currval on
> sequence1
> 5) I do an insert on table2 which includes table1's
> primary key so I can join the records later.
> 6) I manually commit
No. The locking is not necessary.
currval is defined to return the value most recently obtained by nextval
for this sequence in the current session.
see:
http://www.postgresql.org/docs/8.1/interactive/functions-sequence.html
gnari
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: gnari@hive.is, ash_grv7@yahoo.com
Subject: Re: is an explicit lock necessary?
In-Reply-To: <1146769198.31874.3.camel@localhost.localdomain>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox