RE: Correlativos

From: Diego Gil <diego(at)adminsa(dot)com>
To: Miguel Ortega <maob85(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: RE: Correlativos
Date: 2005-09-06 20:33:58
Message-ID: 1126038838.15768.18.camel@roadwarrior.adminsa.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Yo creo que deberias usar BEFORE INSERT. No lo probe pero creo que seria
algo asi :

CREATE OR REPLACE FUNCTION correlativos()
RETURNS TRIGGER AS $BODY$
DECLARE

BEGIN
-- Work out the increment/decrement amount(s).
IF (TG_OP = 'INSERT') THEN
IF (NEW.tipo='1') THEN
NEW.codigo = nextval('secuencia1'::text);
ELSEIF (NEW.tipo='2') THEN
NEW.codigo = nextval('secuencia2'::text);
ElSE
NEW.codigo = 0;
END IF;

END IF;

RETURN NEW;

END;
$BODY$ LANGUAGE plpgsql;

CREATE TRIGGER correlativos
BEFORE INSERT ON temp
FOR EACH ROW EXECUTE PROCEDURE correlativos();

Saludos,
Diego.

El mar, 06-09-2005 a las 20:00 +0000, Miguel Ortega escribió:
> Hola de nuevo... Llegue a algo tosco pero que funciona... Queria saber
> si alguno tiene idea de como optimizar este trigger.... Tengo una duda
> con el Update (Cambiara la fila que debe cambiar o existe la
> posibilidad de que guarden un registro antes de que el trigger
> corra?). Les anexo el codigo:
>
> CREATE OR REPLACE FUNCTION correlativos() RETURNS TRIGGER AS
> $correlativos$
> DECLARE
> correlativo integer;
> posicion integer;
> BEGIN
> -- Work out the increment/decrement amount(s).
> IF (TG_OP = 'INSERT') THEN
> IF (NEW.tipo='1') THEN
> correlativo=nextval('secuencia1'::text);
> ELSEIF (NEW.tipo='2') THEN
> correlativo=nextval('secuencia2'::text);
> ElSE
> correlativo=0;
> END IF;
> --posicion=NEW.idcodigo;
> END IF;
>
> UPDATE temp set codigo= correlativo WHERE idcodigo=(SELECT
> max(idcodigo) FROM temp);
> --NEW.codigo := correlativo;
> RETURN NULL;
> END;
> $correlativos$ LANGUAGE plpgsql;
> CREATE TRIGGER correlativos
> AFTER INSERT ON temp
> FOR EACH ROW EXECUTE PROCEDURE correlativos();

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message jose fermin francisco ferreras 2005-09-06 21:48:15 Cambiar campo
Previous Message Miguel Ortega 2005-09-06 20:00:42 RE: Correlativos