From: | Edgardo Hernández <ehernandez(at)colegium(dot)com> |
---|---|
To: | jvenegasperu <jvenegasperu(at)gmail(dot)com> |
Cc: | Ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Funcion no ejecuta correctamente en postgres 10 |
Date: | 2018-04-15 23:22:10 |
Message-ID: | 3BF8455E-7915-45E3-B555-4F9E3EC464AA@colegium.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 <jvenegasperu(at)gmail(dot)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
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2018-04-16 04:57:55 | Re: modificar tipo de dato postgres |
Previous Message | jvenegasperu | 2018-04-15 21:59:12 | Funcion no ejecuta correctamente en postgres 10 |