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
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 |