Skip site navigation (1) Skip section navigation (2)

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>, <info(at)pgsistemasmdq(dot)com(dot)ar>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Actualizar fila y controlar concurrencia
Date: 2011-08-20 14:47:52
Message-ID: BAY155-W38B81AB6790C675E793971E32D0@phx.gbl (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
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.

*-------------------------------------------------------* 
*-Edwin Quijada 
*-Developer DataBase 
*-JQ Microsistemas 

*-Soporte PostgreSQL

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



> CC: 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: info(at)pgsistemasmdq(dot)com(dot)ar
> Date: Fri, 19 Aug 2011 11:02:16 -0400
> 
> Excerpts from iNFO's message of vie ago 19 10:32:00 -0400 2011:
> >   Hola, soy bastante nuenvo en Postgres y a los golpes he logrado armar 
> > un programa de facruracion que funcion super bien.
> > Ahora quiero solucionar el tema de concurrencia cuando hago alguna 
> > actualizaciones y no logro hacerlo.
> > 
> > el escenartio es el siguiente
> > 
> > Tengo una tabla "Comprobantes" donde guardo el ultimo numero impreso del 
> > comprobante segun corresponda al punto de venta y letra:
> > 
> > el:
> > 
> > pto_venta   letra    ult_num
> >         5              A            100
> >         5              B              50
> >         4              A              10
> >         4              B              23
> > 
> > en el progama al momento de grabar la factura acceso esta table, tomo el 
> > numeor les sumo 1 y lo vuelvo a guardar
> > 
> > se dan lo casos en que desde mas de un pc les asigan el mismo nro.
> > 
> > estuve viendo por ahi el tema de "select ... for update" para bloquear , 
> > trasacciones,etc
> 
> Eso mismo.  Abres una transacción (BEGIN) luego haces un SELECT FOR
> UPDATE del registro que quieres incrementar, luego le das el UPDATE,
> luego commit.  Este procedimiento asegura que nadie obtendrá el mismo
> número.
> 
> Observa que desde el SELECT FOR UPDATE y hasta COMMIT, otra sesión
> tratando de obtener lock sobre el mismo registro quedará bloqueado.
> (Lo cual es razonable)
> 
> -- 
> Á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

Responses

pgsql-es-ayuda by date

Next:From: Edwin QuijadaDate: 2011-08-20 14:56:25
Subject: RE: separar datos de un campo
Previous:From: Jose David Verbel TousDate: 2011-08-19 20:27:25
Subject: Re: Problemas con pgpool

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group