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();
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 |