Jaime,

> why? seems that REPLACE only work if there are at least one row
> matching...

Scenario:

session1: REPLACE .... 1           
                  session2:  REPLACE ..... 1
session1: check to see that "1" exists .... no
                  session2: check to see that "1" exists .... no
session1: INSERT 1
                  session2: INSERT 1 .... ERROR

Get the picture?  The only way to avoid a race condition is to be able to 
do "predicate locking", that is to lock the table against any data write 
matching that predicate.

-- 
--Josh

Josh Berkus
Aglio Database Solutions
San Francisco

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

Reply via email to