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