RE: Actualizar fila y controlar concurrencia

From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: <info(at)pgsistemasmdq(dot)com(dot)ar>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Actualizar fila y controlar concurrencia
Date: 2011-08-22 17:31:54
Message-ID: BAY155-W45DE3A58F1711EBDDA20F3E32F0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Aqui esta :::
CREATE OR REPLACE FUNCTION "public"."get_secuencia" (varchar, concat boolean) RETURNS varchar AS$body$DECLARE tipodoc ALIAS FOR $1; secuencia int4; registro record;BEGIN
/*-----------------------------------------------------------------------------------------*/ secuencia :=1; select into registro * from t_secuencias where f_tipo_documento = tipodoc for update;
IF NOT FOUND THEN INSERT INTO t_secuencias (f_tipo_documento, f_secuencia) VALUES (tipodoc,secuencia); ELSE secuencia:= registro.f_secuencia+secuencia; UPDATE t_secuencias SET f_secuencia = secuencia WHERE f_tipo_documento = tipodoc; END IF;
if concat then return tipodoc||trim(both ' ' from (to_char(secuencia,'0000000')));else return trim(both ' ' from (to_char(secuencia,'0000000'))); end if; END;$body$LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas

*-Soporte PostgreSQL

*-www.jqmicrosistemas.com
*-809-849-8087
*-------------------------------------------------------*

> CC: info(at)pgsistemasmdq(dot)com(dot)ar; pgsql-es-ayuda(at)postgresql(dot)org
> Subject: RE: [pgsql-es-ayuda] Actualizar fila y controlar concurrencia
> From: alvherre(at)alvh(dot)no-ip(dot)org
> To: listas_quijada(at)hotmail(dot)com
> Date: Mon, 22 Aug 2011 13:43:52 -0300
>
> Excerpts from Edwin Quijada's message of sáb ago 20 10:47:52 -0400 2011:
> >
> > Alvaro, esta semana me paso algo interesante con eso. Tengo una funcion que hace exactamente eso bloque el record , luego el update, bien hasta ahi, lo raro es que puse dicha funcion dentro de un trigger para generar dicha secuencia pero al hacer un insert todo se queda bloqueado y el inserrt nunca prospera pero si dentro del insert invoco a la funcion no hay problema solo al ponerla dentro del trigger.Algo extrano, nunca me habia dado cuenta porque siempre la uso , la funcion, desde la aplicacion.
>
> ¿Qué hace la función?
>
> --
> Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripci�n:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos Bazán 2011-08-22 17:42:45 Re: Servicio ntp !!!
Previous Message Angelo Astorga 2011-08-22 17:14:51 Servicio ntp !!!