| From: | Mage <mage(at)mage(dot)hu> | 
|---|---|
| To: | pgsql-general(at)postgresql(dot)org | 
| Subject: | Re: isn't "insert into where not exists" atomic? | 
| Date: | 2011-02-03 23:59:45 | 
| Message-ID: | 4D4B4171.8050305@mage.hu | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general | 
On 02/03/2011 08:23 PM, Tom Lane wrote:
> 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
Thank you, Tom. I will read that.
However I googled a bit before written this trigger and I would like to 
ask you: what is the best practice for doing "insert or update"-like 
thing, especially in this case, in trigger? I would use lock table from 
now. Is it the recommended way?
(I just don't like the "insert -> on exception -> update" method).
Mage
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Vinubalaji Gopal | 2011-02-04 00:08:27 | tuning postgresql writes to disk | 
| Previous Message | Mage | 2011-02-03 23:50:50 | Re: isn't "insert into where not exists" atomic? |