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

Re: detectar bloqueo de una fila

From: "Juan Carlos Del Rio" <juancarlos(dot)delrio(at)tecnosoft(dot)com(dot)co>
To: "Leonel Nunez" <postgres(at)enelserver(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: detectar bloqueo de una fila
Date: 2004-08-18 19:24:17
Message-ID: 001a01c48558$f43ef740$8302000a@tecno.com.co (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
El objetivo es bloquear el registro en una transaccion  por un tiempo(sesion
A) . Mientras que otra (sesion B) si depronto desea actualizarla no pueda,
pero hago la prueba y la sesion B se queda "como pensado" en modo espera a
que suelte el registro.


Mas sin embargo lo que se desea es que la sesion B responda con un codigo o
nitifique que el registro esta ocupado, bloqueado, como se pregunta esto en
postgres?
----- Original Message ----- 
From: "Leonel Nunez" <postgres(at)enelserver(dot)com>
To: "Juan Carlos Del Rio" <juancarlos(dot)delrio(at)tecnosoft(dot)com(dot)co>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Wednesday, August 18, 2004 12:11 PM
Subject: Re: [pgsql-es-ayuda] detectar bloqueo de una fila


> On Wed, 2004-08-18 at 10:50, Juan Carlos Del Rio wrote:
> > Hola Compañeros.
> >
> > Como puedo detectar un bloqueo en un registro.
> >
> > SESSION 1
> > #<base_de_datos>select id from tabla where id= id_registro for update;
> > #<base_de_datos>
> >
> > Como pueden ver aqui se bloquea el registro y el shell me prepara para
> > la siguiente instruccion con   #<base_de_datos>
> >
> > Seguidamente un usuario en otra sesion trata de bloquear ese registro
> >
> > SESION 2
> >
> > #<base_de_datos>update tabla set campo='xxx' where id= id_registro;
> >
> > En esta sesion queda bloqueada la peticion, pero no me arroja ningun
> > resultado...
> >
> > NOTA: Necesito un mensage de respuesta para poder tomar una decision
> > en el entorno WEB.
> >
> >
> > O mejor aun.... ¿ Como puedo detectar un bloqueo en un registro antes
> > de hacer un update ?
>
> El problema aqui es que cuando haces el select for update  NO esta
> dentro de una transaccion
> por consecuencia haces el select for update  se bloquea y desbloquea
> cuando termina
>
> necesitarias un
>
> begin;
> select id from tabla where id= id_registro for update;
> end;
>
>
> la otra sesion se va a bloquear mientras termina la transaccion en la
> sesion 1
>
>
> en cuando al desarrollo de aplicaciones para el www
> DEBES asegurar que los bloqueos y actualizaciones sean "transparentes"
> para los otros procesos. Me refiero a que NO duren "mucho" ya que una
> transaccion bloqueando un registro puede detener TODOS los otros
> procesos.
>
>
> De hecho como  quieres actualizar 2 veces la misma tabla es NECESARIO el
> bloqueo
>
>
> date una paseada por :
>
> http://www.postgresql.org/docs/7.4/static/mvcc.html
>
>
> Seguimos ....
>
> -- 
>  ,''`.  Leonel Nunez
> : :' :  http://enelserver.com
> `. `'   DEBIAN GNU/LINUX
>   `-    A REAL FREE OS
>
>


In response to

Responses

pgsql-es-ayuda by date

Next:From: Josué MaldonadoDate: 2004-08-18 19:32:06
Subject: Re: detectar bloqueo de una fila
Previous:From: Patricio MuñozDate: 2004-08-18 19:17:14
Subject: Re: INSTALAR POSTGRESQL 7.4

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