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.
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! |