Alvaro muchas gracias por la respuesta, ahora te pregunto, esta consideración que me planteas también aplica al ejemplo que puse con CTE??
Acá te pongo nuevamente el ejemplo: WITH CTE AS ( UPDATE prueba SET nombre = 'Lazaro' WHERE id = 1 RETURNING id ) INSERT INTO public.prueba ( id, nombre ) SELECT 1, 'pepe' WHERE 1 NOT IN (SELECT CTE.id from CTE); Un saludo. ________________________________________ De: Alvaro Herrera [alvhe...@2ndquadrant.com] Enviado el: viernes, 29 de noviembre de 2013 11:43 Para: Lazaro Ruben Garcia Martinez CC: pgsql-es-ayuda@postgresql.org Asunto: Re: [pgsql-es-ayuda] Sobre comando MERGE Lazaro Ruben Garcia Martinez escribió: > Buenos días a todos en la lista. > > Existe algún soporte en PostgreSQL para hacer uso de la funcionalidad > MERGE/UPSERT? > > En caso de no existir una implementación utilizando CTE, podría ser factible > como la siguiente: No. Dos transacciones concurrentes haciendo lo mismo terminarían mal. Realmente, la única forma de hacerlo es con un EXCEPTION en plpgsql que intente un insert y si falla haga un update (o bien usando SAVEPOINTs y ejecutando lo mismo directamente en vez de usar plpgsql). Está en diseño una nueva forma de lidiar con este problema, que es algo como INSERT..ON DUPLICATE KEY LOCK FOR UPDATE; puedes ver la (muy larga) discusión en http://www.postgresql.org/message-id/cam3swzthwrktvurf1awaih8qthgnmzafydcnw8qju7pqhk5...@mail.gmail.com -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU! http://www.antiterroristas.cu http://justiciaparaloscinco.wordpress.com Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU! http://www.antiterroristas.cu http://justiciaparaloscinco.wordpress.com - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda