Actualizar registros de tabla basados en otra

From: Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx>
To: "Lista - PostgreSQL" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Actualizar registros de tabla basados en otra
Date: 2009-02-09 09:08:01
Message-ID: 67BD01BEA2364B90AEC4EE780EFB834B@Principal
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Cordial saludo compañeros.

Quisiera saber si a alguien se le ocurre una solución a este problema.

Tengo un proceso que actualiza datos en una tabla basado en valores de otra tabla. Actualmente lo realizo DESDE LA APLICACION recorriendo la tabla base y por cada registro realizo una actualización en la tabla a actualizar, pero es MUY demorado por la cantidad de datos que actualmente se maneja y ahora quiero hacerlo desde la DB (pl/pgsql) y "set-oriented".

Más o menos el algoritmo que hago desde la aplicación es el siguiente:

for each (select distinct muestra_par = id_parte, muestra_alm = id_almacen, muestra_loc = id_localizacion from def_salinvmes)
select nuevovalor = valor
from def_salinvmes
where id_parte = muestra_par
id_almacen = muestra_alm
id_localizacion = muestra_loc
order by anno_salinvmes desc, mes_salinvmes desc
limit 1

update def_existloc
set valor = nuevovalor
where id_parte = muestra_par
id_almacen = muestra_alm
id_localizacion = muestra_loc
end for each

Lo que se me ha ocurrido es utilizar un cursor pero automáticamente se me cae el desempeño al piso y casi que estría haciendo lo mismo que hago desde la aplicación en la DB. Otra alternativa era crear un trigger/regla en el before para cambiar el update por un delete/insert algo así como implementar un UPSERT pero no me gusta la idea de crear y borrar este trigger cada vez que se corre el proceso ya que no podría tenerlo "vivo" en la operación normal.

Cualquier comentario es bienvenido.

Atentamente,

RAUL DUQUE
Bogotáq, Colombia

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Ferro 2009-02-09 10:29:16 Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Tsearch2: realizar búsqueda sin acentos
Previous Message Edwin Quijada 2009-02-09 06:08:24 RE: Error de instalacion en UBUNTU!