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