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 ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings