PDA

Ver la Versión Completa : Select bloquea update


luis1980
19-09-2008, 12:15:53
Hola. Cuando hago un select de una tabla no puedo modificar los datos de esa tabla mientras no se cierre la consulta del select, ni siquiera aunque intente modificar los datos desde otra aplicacion.
Agradeceria si alguien me diese una solución, gracias.
La manera en que hago el select es la siguiente:

hnd = mysql_init(NULL);
if (mysql_real_connect(hnd,"localhost",user,pass,"BD",0,NULL,0) != NULL){
memcpy(sql, "SELECT Id,Foto1,Foto2,Foto3 FROM Tabla WHERE
Enviado Is not Null",300);
if (!mysql_query(hnd,sql)){
res = mysql_use_result(hnd);
if (res){
row = mysql_fetch_row(res);
while (row){
if (row[1] != NULL)
foto1 = rutafotos + row[1];
if (row[2] != NULL)
foto2 = rutafotos + row[2];
if (row[3] != NULL)
foto3 = rutafotos + row[3];
}
}
mysql_free_result(res);
}
}
mysql_close(hnd);

rgstuamigo
20-09-2008, 15:13:10
Ese es problema que el servidor pone un candado para las consultan que le llegan. Te doy un ejemplo:
Digamos que el usuario X de la pc X1 esta actualizando la tabla Empleado de un a base de datos ,pero exactamente en ese momento el usuario Y de la maquina Y1 esta tambien esta eliminando una tupla o varias de la misma tabla empleado ¿Que crees que ocurriria?:confused:
Pues la tabla quedaria un desastre y tu base de datos seria inconsistente ¿verdad? Imaginate que si es una transaccion de una cuenta Bancaria o algo por el estilo.
Es ahi lo que surge la idea de CANDADO los servidores ponen candado a una consulta y a sus tablas correspondiente, miestras que no termine la transaccion o la consulta, nadie podra tocar esa tabla, ¿me entiendes?.
Terminada la transaccion o la consultan se abre el candado para dejar libre para cualquier otra consulta.Asi trabajan Los servidores.
De todas manera es bueno que busques un manualcito sobre este tema.;)
Saludos..:D

luis1980
22-09-2008, 12:51:04
Gracias por responder, me has aclarado el tema.

Saludos.