From: | juan <juanramirez(at)cajazacate(dot)com(dot)sv> |
---|---|
To: | Joac <jgarcil(at)hotmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: cuando se incrementa un campo serial en insert |
Date: | 2010-03-16 14:12:12 |
Message-ID: | 4B9F91BC.4050103@cajazacate.com.sv |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Joac escribió:
> Al utilizar un trigger (disparador) antes de introducir un registro a la tabla (que tiene como clave primaria un campo serial) se hace una serie de comprobaciones de otra tabla, si la introducción de datos es correcta se inserta el registro a la tabla en caso contrario dá un error y no se inserta el nuevo registro. Pero al dar el error el autoincremento se actualiza como si se ubiese introducido un registro en la tabla. Lo que me gustaría saber es cuando se incrementa este campo para cuando dé un error el disparador no se incremente dicho campo. Aunque en la documentacion indica que cuando se utiliza RAISE EXCEPTION se aborta la transacción, es cierto no se inserta el registro en la tabla, pero si que se incrementa el campo serial. Dejo la función disparadora para mayor compresión.
Supongo que tienes en el campo serial el valor 'default' como el
siguiente valor de la secuencia.
Deberías de lograr lo que esperas si quitas ese valor default; y lo
asignas hasta que todo tu trigger valide el registro ingresado.
--
Cordialmente,
Juan Ramírez
El Salvador
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2010-03-16 15:06:42 | Re: Sobre pg_advisory_locks |
Previous Message | Oswaldo Hernández | 2010-03-16 12:46:06 | Re: cuando se incrementa un campo serial en insert |