Re: detectar bloqueo de una fila

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
Subject: Re: detectar bloqueo de una fila
Date: 2004-08-18 17:11:14
Message-ID: 1092849074.2905.23.camel@debian.enelserver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message julio 2004-08-18 17:29:19 Re: INSTALAR POSTGRESQL 7.4
Previous Message Juan Carlos Del Rio 2004-08-18 16:50:48 detectar bloqueo de una fila