Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

currval() race condition on server?



Hi,

I've run into an intermittent problem with our code recently. We have the following set-up:

table A : some data table
table B : a history table for table A

A trigger copies the old version of a row into table B whenever an update is done on table A. Both A and B contain an audit number, and the trigger obtains an audit number from a sequence and inserts it into the row inserted into table A.

For some bookkeeping purposes I need the new audit number back from the update, so I submit a prepared statement through jdbc of the form

UPDATE A SET ....; SELECT currval('ip_audit_seq');

On the first call I get

ERROR: currval of sequence "ip_audit_seq" is not yet defined in this session

Note that this works without any trouble if I issue the commands in a transaction through psql, and this used to work in earlier versions of postgres.

We have a lot of users on very high latency links, so it is important for the responsiveness of the application to try to do the update and select in a single database trip.

So I'm wondering whether there is some type of race condition, where the selection of the new value from ip_audit_seq is not available to the currval function straight away? Anybody got any ideas on this?

Cheers,

Adriaan



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group