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