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