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: [email protected]; [email protected]
> Subject: RE: [pgsql-es-ayuda] Actualizar fila y controlar concurrencia
> From: [email protected]
> To: [email protected]
> 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 <[email protected]>
> -
> Enviado a la lista de correo pgsql-es-ayuda ([email protected])
> Para cambiar tu suscripci�n:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda