приходят внешние данные с уникальным ID (uuid) нужно эту запись либо создать, либо проапдейтить новыми значениями делал так: dbh->begin_work; # начали транзакцию my $record = dbh->single( # попытка апдейта q{ UPDATE table SET some=? WHERE eid=? RETURNING * }, $val, $eid ); unless ($record) { # инсерт после неудачи апдейта my $record = dbh->single( q{ INSERT INTO table (eid, some) VALUES (?, ?) RETURNING * }, $eid, $val ); } dbh->commit; # коммит транзакции то есть в транзакции пытаемся сперва сделать апдейт имеющегося, а если его нет в БД то затем делаем insert. так вот при таком подходе при приходе одновременных запросов иногда падает на втором insert'е с жалобой что такой ключ уже существует. как правильно решить данную проблему? -- . ''`. Dmitry E. Oboukhov : :’ : email: unera@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEAREDAAYFAk/iF0cACgkQq4wAz/jiZTcyfACg0YDwJvZbxKBenjotM7WDdWL/ YJoAoNgQ6tz13jtNGlkIYdf4XGoATD/Y =OQgr -----END PGP SIGNATURE-----
pgsql-ru-general by date:
Соглашаюсь с условиями обработки персональных данных