Inserting possible dublicate unique keys

Поиск
Список
Период
Сортировка
От Alvar Freude
Тема Inserting possible dublicate unique keys
Дата
Msg-id 3ABF47BC.953AA68@huitzilopochtli
обсуждение исходный текст
Список pgsql-general
Hi,

what is the best method to make concurrent inserts to a table with
unique/primary key?

Scenario:
I write a DBI logger for Apache, and this uses a table for all referers:


CREATE TABLE referer (
   id         SERIAL,
   referer    varchar(2048) NOT NULL PRIMARY KEY
   );


so, you can imagine that there are two accesses with the same referer at
the same time; at logging time, each process looks if there is already
an entry for this referer and catches its id, but if not, it inserts the
new referer.

So, it is possible that two processes trying to insert the same primary
key into the table.


My solution is: if transaction is broken, I restart the hole transaction
(there are more then one inserts like this for each request) a second
time. But i can not be sure that the transaction is aborted because a
dublicate unique key, and it seems to me not the most elegant solution.


Any other ideas?!?


Ciao
  Alvar


--
AGI
Magirusstrasse 21B, 70469 Stuttgart
Fon +49 (0)711.228 74-50, Fax +49 (0)711.228 74-88
+++news+++news+++news+++
Beste Image-Website 2001 kommt von AGI
http://www.agi.de/tagebuch
http://www.agi.com/diary (english)

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

Предыдущее
От: "Brett W. McCoy"
Дата:
Сообщение: Re: Starting Postmaster
Следующее
От: "Brian Baquiran"
Дата:
Сообщение: WAL file lifespan (7.1RC1)