Excerpts from Jorge Garcia's message of mié sep 19 12:18:18 -0300 2012:
> Hola Grupo Buenos Días,
> 
> Tengo una función que realiza cálculos a unos 80 mil registros los
> registros los recorro en un cursor y se hace calculo registro por registro
> y quiero que no se haga commit al final de todo el procesamiento si no que
> se haga commit por cada registro procesado y saber si se proceso o
> hubo algún error. como puedo hacer eso?? de antemano gracias por la ayuda
> que me puedan dar.

Es mala idea hacer commit por cada registro, a menos que uses commit
asincrónico; de lo contrario el rendimiento es muy malo.

Lo que sí podrías intentar hacer es poner un bloque begin/exception/end
en plpgsql, para cada cursor; internamente lo que eso hace es poner un
savepoint, de manera que si el cálculo falla para un registro, se
ejecuta el bloque exception, la transacción no se aborta, y se continúa
con el siguiente.  El rendimiento es mucho mejor que poner un commit
para cada registro, pero tiene un cierto costo de rendimiento.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a