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. 
   
 


