Re: Funcion no ejecuta correctamente en postgres 10

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
>
>

In response to

Browse pgsql-es-ayuda by date

  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