On 15/01/2020 10:41 am, mauricio pullabuestan wrote:
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?
Yo haría un merge y con un trigger en un update insertar en una tabla de updates y otro trigger insertar los datos nuevos ( eso es lo que quieres ? ).
Claro debe ser un after para no agregar latencia en la transacción.
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;