saber que filas se actualizaron o insertaron con upsert

From: mauricio pullabuestan <jmauriciopb(at)yahoo(dot)es>
To: Postgres ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: saber que filas se actualizaron o insertaron con upsert
Date: 2020-01-14 21:41:16
Message-ID: 528818152.19263783.1579038076083@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buen día

Tengo una tabla a la cual envió un json para insertar o actualizar registros, me interesa mediante returing insertar en una tabla temporal los registros afectados y de alguna forma poder distinguir cuales se insertaron o actualizaron para poder interactuar después.

Alguna idea de como hacerlo?

dejo un scrip de como estoy haciéndolo

Saludos.
Mauricio

do $$
DECLARE _json json;

BEGIN 

_json = '[{"prb_id":1,"nombre":"iten existe"},{"prb_id":2,"nombre":"iten No existe"}]';

CREATE TEMP TABLE _rs On COMMIT DROP 
As 
WITH t
AS 
(
INSERT INTO public.prueba as p
(prb_id, nombre)
SELECT x.prb_id, x.nombre
 From json_to_recordset(_json) x 
      (prb_id INTEGER, nombre VARCHAR)
ON CONFLICT (prb_id) 
     DO UPDATE 
        SET nombre = EXCLUDED.nombre
RETURNING p.*
)
Select *
 From t;

/*
Interactuar con registros nuevos

Interactuar con registros editados
*/

END 
$$;

Select *
 From _rs;

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message mauricio pullabuestan 2020-01-14 21:45:19 Re: saber que filas se actualizaron o insertaron con upsert
Previous Message Romero, Fernando 2020-01-14 11:26:20 RE: Consulta sobre DISCARD