Re: Como usar ROLLBACK

From: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
To: marcosrios(at)planet(dot)com(dot)pe
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Como usar ROLLBACK
Date: 2009-05-02 16:19:07
Message-ID: 3073cc9b0905020919p7eb52a96u36f8d615d7dcaf87@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Wed, Apr 29, 2009 at 3:12 PM, <marcosrios(at)planet(dot)com(dot)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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jorge Medina 2009-05-02 19:24:14 Re: Mondrian + Postgresql
Previous Message juan 2009-05-02 14:04:29 Re: Como usar ROLLBACK