Re: Ayuda urgente con transacciones

From: Julio Rivero <jcrmlima(at)gmail(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: Conrado Blasetti <conrado(at)mapfre(dot)com(dot)ar>, July Campos <jcampos(at)interactivedata(dot)com(dot)ve>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda urgente con transacciones
Date: 2006-02-08 05:17:13
Message-ID: d34a12b60602072117s2c43b91hcd19fb2c3852d499@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Siempre he manejado los bloques con BEGIN, lo que si tengo que modificar es,
las lineas donde tengo ROLLBACK;

voy a manejar el cierre de las transacciones desde la aplicación.

On 2/7/06, Jaime Casanova <systemguards(at)gmail(dot)com> wrote:
>
> On 2/7/06, Julio Rivero <jcrmlima(at)gmail(dot)com> wrote:
> > mmm... no me habia fijado, hasta el momento he utilizado el rollback con
> los
> > exception y no me ha traido problemas... es cierto, el RAISE EXCEPTION
> > aborta la función y por ende corta la transaccion (insert, update,
> delete,
> > etc)...
> >
> > Gracias por la aclaración.
> >
> >
> > On 2/7/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
> > >
> > > Julio Rivero escribió:
> > > > Sorry, no revise bien el codigo, tiene razón, el Begin va sin ";" y
> > > siempre
> > > > tiene que cerrarse con un end;
> > > >
> > > > el commit es automatico, si todo esta OK el postgres cierra la
> > > transacción,
> > > > de lo contrario le mandas el rollback;
> > >
> > > Veo que nadie probo lo que esta sugiriendo, o siquiera se molesto en
> > > leer el manual de PL/pgSQL. La verdad es que es imposible ejecutar
> > > ROLLBACK en PL/pgSQL.
> > >
> > > Lo que puedes hacer es usar RAISE EXCEPTION, lo cual abortara la
> > > funcion automaticamente.
> > >
>
> hasta la version 7.4 esto es lo unico que se puede hacer
>
> > > Observa que puedes usar un bloque
> > >
> > > BEGIN
> > >
> > > EXCEPTION
> > >
> > > END
> > >
> > > y entre el BEGIN y el EXCEPTION hacer un RAISE EXCEPTION, la cual sera
> > > capturada y el control se le dara al bloque EXCEPTION, donde puedes
> > > hacer un nuevo RAISE EXCEPTION si te place.
> > >
>
> hay que notar que esta ultima construccion, solo se puede usar desde
> la version 8 en adelante...
>
> incluso se puede usar varias construcciones BEGIN ... EXCEPTION
>
> --- begin script sql ---
>
> create table tt (col1 int not null primary key check (col1 > 0 and col1 <
> 100));
>
> create function prueba() returns boolean as $$
> begin
> begin
> insert into tt values (-1);
> exception
> when others then
> end;
> begin
> insert into tt values (1000);
> exception
> when others then
> end;
> insert into tt select generate_series(1, 99);
> return true;
> end;
> $$ language plpgsql;
>
> --- end script sql ---
>
> > > Por favor lee el manual de PL/pgSQL. Incluso hay una traduccion hecha
> > > recientemente para la cual muchos de esta lista te pueden dar una URL.
>
> > >
>
> esta en www.postgresql.org.mx
>
> o el actualizado (en ingles):
>
> http://www.postgresql.org/docs/8.1/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING
>
> --
> Atentamente,
> Jaime Casanova
> (DBA: DataBase Aniquilator ;)
>

--

Saludos
Att,
Julio Rivero
Movil: 98817321

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message badillo 2006-02-08 09:15:09 Ayuda urgente, necesito enviar correos desde postgres.
Previous Message Jaime Casanova 2006-02-08 04:45:26 Re: varios inserts..