Estas seguro que funcionaba antes?, por lo que veo el problema esta en la creación del trigger no en la función:
> CREATE TRIGGER numeracion > AFTER INSERT > ON con_diario > FOR EACH ROW > EXECUTE PROCEDURE func_numeracion(); Esta creado AFTER y la función modifica numero y retorna NEW pero el INSERT ya paso. Esto quiere decir que el UPDATE en la tabla fe_numeraciones se ejecuta pero NEW.numero := id; no tiene ningún efecto. Cambia la forma de crear el trigger y debería funcionar: CREATE TRIGGER numeracion BEFORE INSERT ON con_diario FOR EACH ROW EXECUTE PROCEDURE func_numeracion(); Saludos. Edgardo Hernandez. > El 15-04-2018, a las 18:59, jvenegasperu <jvenegasp...@gmail.com> escribió: > > Buen dia a todos > > tengo esta funcion y trigger y no me esta actualizando el valor correctamente > en 9.6 funciona bien en 10 no alguna ayuda? > el campo numero de la tabla se queda null. > > es como si funcionara todo excepto esta linea > > new.numero := id; > > CREATE OR REPLACE FUNCTION func_numeracion() > RETURNS trigger AS > $BODY$ > DECLARE > id INTEGER; > BEGIN > --SELECT numero FROM fe_numeraciones where doc = NEW.doc and serie = > NEW.serie LIMIT 1 INTO id FOR UPDATE; > SELECT numero FROM fe_numeraciones where doc = NEW.doc and serie = > NEW.serie LIMIT 1 INTO id; > update fe_numeraciones set numero = id + 1 where doc = New.doc and serie > = NEW.serie; > NEW.numero := id; > RETURN NEW; > END; > $BODY$ > LANGUAGE plpgsql VOLATILE > COST 100; > ALTER FUNCTION func_numeracion() > OWNER TO postgres; > > END; > $BODY$ > LANGUAGE plpgsql VOLATILE > COST 100; > ALTER FUNCTION func_numeracion() > OWNER TO postgres; > > -- DROP TRIGGER fn ON fe_retencion; > CREATE TRIGGER numeracion > AFTER INSERT > ON con_diario > FOR EACH ROW > EXECUTE PROCEDURE func_numeracion(); > > > -- > José Mercedes Venegas Acevedo > cel Mov RPC 964185205 > >