From: "Leo Gamez CCD Desarrollo" <desarrollo(at)ccdasesores(dot)e(dot)telefonica(dot)net>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject:
Date: 2005-04-21 06:24:31
Message-ID: 6556315E9E43C34C98E67355DF3C5C050DC845@ZE3BUZON020.e.telefonica.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Cristian,

Quiza deberias intentar con un trigger before insert or update. Puede que asi no se llame a la funcion next_id() del serial y no pierdas valores.

Saludos,

Leo

Hola a todos:
Tengo el siguiente problema: creé una tabla con un campo de tipo serial (que es
clave primaria) y un cmapo de tipo varchar(x). Finalmente creé un trigger (EACH
ROW, after insert or update) que chequea si el campo varchar está vacío o es
nulo, genera un RAISE exeption sino devuelve NEW .
El trigger funciona bien: hace lo que tiene que hacer. El problema se sucita
cuando intento insertar un registro correcto inmediatamente de haber intentado
ingresar un registro con el campo varchar vacío(es lo que controla el trigger):
Se pierden los nros de secuencia del campo serial, saltea un valor. Si intentara
ingresar un registroerróneo 2 veces , salteará 2 veces. Un ejemplo:
id descripción
1 blah1
---
3 blah2

Según tengo entendido, cada llamada next_id() de una secuencia actualiza el
valor de dicha secuencia, se inserte o no el registro. Lo que sospecho es que
hace la llamada a next_id() antes qeu se dispare el desencadenante.
Podría alguien ayudarme?

Gracias

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

---------------------------(fin del mensaje)---------------------------
TIP 9: el optimizador ignorará el uso de recorridos de índice si los
tipos de datos de las columnas no coinciden

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Leonardo Boet Sánchez 2005-04-21 12:11:47 RE: Posible Bug en PostgreSQL
Previous Message Alvaro Herrera 2005-04-21 01:26:36 Re: Trigger, sequence y otras yerbas