Mage <mage(at)mage(dot)hu> writes:
> The main question is that isn't "insert into ... select ... where not
> exists" atomic?
No, it isn't: it *will* fail in the presence of other transactions doing
the same thing, because the EXISTS test will only see rows that
committed before the command started. You might care to read the
manual's chapter about concurrency:
http://www.postgresql.org/docs/9.0/static/mvcc.html
regards, tom lane