currval() race condition on server?
От | Adriaan Joubert |
---|---|
Тема | currval() race condition on server? |
Дата | |
Msg-id | 453CC859.8070306@albourne.com обсуждение исходный текст |
Ответы |
Re: currval() race condition on server?
Re: currval() race condition on server? Re: currval() race condition on server? |
Список | pgsql-jdbc |
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
В списке pgsql-jdbc по дате отправления: