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 - 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