RE: Sobre comando MERGE

From: Lazaro Ruben Garcia Martinez <lgarciam(at)vnz(dot)uci(dot)cu>
To: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Sobre comando MERGE
Date: 2013-11-29 16:36:02
Message-ID: 294D3D02D5E18D42827B2ECFEADEB688BA081E57B5@mx-interno.vnz.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 [alvherre(at)2ndquadrant(dot)com]
Enviado el: viernes, 29 de noviembre de 2013 11:43
Para: Lazaro Ruben Garcia Martinez
CC: pgsql-es-ayuda(at)postgresql(dot)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/CAM3SWZThwrKtvurf1aWAiH8qThGNMZAfyDcNw8QJu7pqHk5AGQ@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(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martín Marqués 2013-11-30 13:35:39 Re: backup a funciones plpgsql
Previous Message Alvaro Herrera 2013-11-29 16:13:35 Re: Sobre comando MERGE