Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Bloqueos a nivel de Registro

Estas en el tema de Bloqueos a nivel de Registro en el foro de Mysql en Foros del Web. Hola a todos, despues de leer aqui bastantes post sobre este tema y buscar informacion en la web, todavía no he conseguido aprender bien el ...
  #1 (permalink)  
Antiguo 27/05/2012, 11:24
 
Fecha de Ingreso: mayo-2012
Ubicación: España
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Bloqueos a nivel de Registro

Hola a todos, despues de leer aqui bastantes post sobre este tema y buscar informacion en la web, todavía no he conseguido aprender bien el funcionamiento de bloqueos a nivel de registros en tablas InnoDB, tambien he hecho pruebas con transacciones pero no consigo que me funcione bien.

Si alguien conoce algun enlace o curso sobre este tema que lo explique bien con ejemplos se lo agradecería mucho.

Trabajando desde un servidor en localhost he probado crearme desde php 2 conexiones a la misma base de datos con dos usuarios diferentes que tengan acceso a esa base de datos.
He estado usando conexiones persistentes con mysql_pconnect(), he intentado realizar consultas para conseguir bloqueos. Solo he conseguido bloquear con:

begin;
SELECT `innotest`.`campo`, `innotest`.`nombre`
FROM innotest
WHERE (`innotest`.`campo` =1) LOCK IN SHARE MODE

Me bloquea este registro pero si despues intento UPDATE incluso desde la misma conexion el navegador queda bloqueado hasta que pasan 30 segundos y recibo el tipico mensaje de error de php: "Maximum execution time of 30 seconds exceeded.
aunque intente despues en conexion 1 hacer:
COMMIT;

la unica forma que consigo de desbloquear es reinicializar el servidor local;


Tambien he probado en conexion 1:
begin;
SELECT `innotest`.`campo`, `innotest`.`nombre`
FROM innotest
WHERE (`innotest`.`campo` =1) for update


he continuado en la conexion 2 para comprobar bloqueo con:
UPDATE innotest SET nombre="manolo" WHERE campo=1;

pero me ha permitido la actualizacion sin recibir error

Lo que intento programar es :

1: bloquear un registro
2: poder editarlo modificando sus campos (imagino que habrá que hacerlo dentro de un tiempo establecido)
3: actualizarlo en la base de datos con UPDATE
4: desbloquearlo para que otros usuarios puedan nuevamente realizar actualizaciones a dicho registro.

Espero ayuda muchas gracias de antemano.

Última edición por jesumaran; 27/05/2012 a las 13:09

Etiquetas: nivel, php, registro, registros, select, sql, tabla, bloqueo, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:24.