Hi there. I'm currently using Postgresql 7.0.3, accessing using the JDBC
drivers. I'm enforcing the most severe transaction isolation available
(serializable). I'm currently doing something like the following (this
is pseudo code, with the if being performed in Java):

lock table foo in access exclusive mode
select count(*) from foo where key1 = bar, key2 = baz

if count > 1
    insert into foo (key1, key2, other) values (bar, baz, stuff)

Now, table foo has a primary key made up of key1 & key2. Without
concurrent access, the code works great. However, provided I use enough
threads, I inevitably get back errors from the database indicating that
I've tried to insert a record which violates the uniquness of the
primary key.

Is there away to avoid this error by doing my SQL & locking properly, or
should I just catch the exception and deal with it?


---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?


Reply via email to