Re: BUG #13496: INSERT WHERE NOT EXISTS error
| От | hubert depesz lubaczewski |
|---|---|
| Тема | Re: BUG #13496: INSERT WHERE NOT EXISTS error |
| Дата | |
| Msg-id | 20150709165406.GA13875@depesz.com обсуждение исходный текст |
| Ответ на | BUG #13496: INSERT WHERE NOT EXISTS error (ilies.ovidiu@googlemail.com) |
| Список | pgsql-bugs |
On Thu, Jul 09, 2015 at 03:53:04PM +0000, ilies.ovidiu@googlemail.com wrote:
> The insert query is like:
> INSERT INTO "website"."search_terms" SELECT 'someID', 'someSearchTerm' WHERE
> NOT EXISTS ( SELECT 1 FROM "website"."search_terms" WHERE (("id" = 'someID')
> OR ("term" = 'someSearchTerm')) LIMIT 1 OFFSET 0 )
> It appears this "upsert" is not safe in high concurency mode ~ 20 users /
> second as I see in Google analytics for that period of time.
Of course it's not safe. Whoever told you it's safe was lying.
There is some time between select check, and the insertion. Hence - race
condition.
More information here:
http://www.depesz.com/2012/06/10/why-is-upsert-so-complicated/
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
В списке pgsql-bugs по дате отправления: