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
--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
   (envía "unregister TuDirecciónDeCorreo" a majord...@postgresql.org)

Responder a