Re: problemon con trigger

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: problemon con trigger
Date: 2007-01-08 02:07:03
Message-ID: 20070108020703.GE7810@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gabriel Ferro escribió:
> Maestros estoy empezando con postgree y me estoy volviendo loco, la
> cosa es que los clientes van metiendo en una tabla datos los cuales yo
> voy sacando y quiero que cuando la tabla este vacia se reinicie el
> campo autoincremento pensaba en hacerlo con trigger de forma que sea
> automatico pero me da un error y no se para donde disparar, debajo les
> pongo el codigo, si me pueden ayudar se los agradecere...

Huh, esto que propones esta completamente malo, porque puedes causar que
al resetear la secuencia se vuelva al valor inicial que esta siendo
insertado en ese mismo momento.

Te pongo un ejemplo

sesion 1:
begin;
insert into Recibidas values (nextval(Recibidas_Renglon_seq), ...)

sesion 2:

ejecuta el procedimiento, empieza por el
select * from Recibidas;

puesto que la sesion 1 no ha comprometido su transaccion todavia, no ve
la tupla que esta insertando, por lo tanto entra en NO_DATA_FOUND y
resetea la secuencia

sesion 1:
commit;

sesion 3:
begin;
insert into Recibidas values (nextval(Recibidas_Renglon_seq), ...)
-- Aca nextval() entrega el valor 1 porque la secuencia fue reseteada

Y listo, ya corrompiste tus datos, felicitaciones!

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-01-08 02:08:53 Re: Cuando llevan comillas los parametros
Previous Message Alvaro Herrera 2007-01-08 01:55:40 Re: Ayuda!