On Wed, Apr 29, 2009 at 3:12 PM,  <marcosr...@planet.com.pe> wrote:
> Estimada Lista,
>
> Tengo una funcion que me actualiza saldos de varios productos, le envio como
> parametros un nro de pedido y la funcion lee todos los productos
> relacionados con ese nro de pedido descontando uno a uno de la tabla de
> saldos la cantidad solicitada.
>
> Mi problema es que si alguna de las cantidades solicitadas excede al stock,
> la funcion debe hacer un ROLLBACK a los registros que previamente han sido
> procesados como validos dentro del mismo nro de pedido. He intentado ponerle
> un ROLLBACK, pero me devuelve un error y cuelga mi aplicativo.
>

eso es porque no puedes usar rollback dentro de una funcion...
que tal si pones un CHECK constraint en la tabla que vas a actualizar,
algo asi como: CHECK (stock_disponible >= 0), asi al actualizar y
quedar el valor menor a cero va a dar un error (usa una EXCEPTION para
manejar el error) y eso automaticamente hara un ROLLBACK

-- 
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157
--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

Responder a