Problems ensuring uniqueness?

Поиск
Список
Период
Сортировка
От Christopher Smith
Тема Problems ensuring uniqueness?
Дата
Msg-id 992898628.6594.1.camel@rivest.xdrive.com
обсуждение исходный текст
Ответы Re: Problems ensuring uniqueness?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
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


В списке pgsql-sql по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Subselects, the Oracle way
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Problems ensuring uniqueness?