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):
begin
lock table foo in access exclusive mode
select count(*) from foo where key1 = bar, key2 = baz
if count > 1
rollback
else
insert into foo (key1, key2, other) values (bar, baz, stuff)
commit
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?
--Chris