Ver Mensaje Individual
  #28 (permalink)  
Antiguo 05/09/2003, 12:41
dominguez
 
Fecha de Ingreso: julio-2003
Mensajes: 463
Antigüedad: 20 años, 9 meses
Puntos: 0
Hola, eso que apuntas se solucoinaría por ejemplo con una función q al cargar cada página de la aplicación borrara aquellos registros que lleven mas de X-tiempo y ya está.


Bien, creo que un UPDATE no se resuelve el problema del error, por que estas bloqueando algo que tienes que saber si se está usando, sino llega uno y hace el UPDATE pero ese registro alguien lo puede estar modificando ya.

Pienso que la solución podría ir por el siguiente camino: un tabla y en ese tabla almacenar un "identificador" del objeto que se va a modificar o borrar. Ese identificador tiene que tener toda la información necesaria. Al leerlo, hay que saber el objeto que se modifica y de que tipo es.Por ejemplo, si voy a modificar un Usuario almacenar su NIF.

Entonces los pasos serían:

1)Bloquear el Usuario con nif 12345678A añadiendo un registro en la tabla que antes he comentado.

2)Después de almacenar ese registro comprobar, que desde el indice 0 de la tabla hasta el mismo NO HAY un registro que tenga el mismo NIF. Es decir, asegurarte de que nadie lo esta usando.

Si al consultar hay dos registros con el mismo NIF, hay que esperar, si no lo utilizo.

SIEMPRE desde la 0 hasta la que inserte mi registro, de está manera NUNCA nadie estará utilizando dos objetos a la misma vez. Claro, que se me ocurre almacenar en la tabla también una identificación del que lo inserta que podría ser una variable aleatoria de un número de dígitos lo suficientemente grande como para que la posibilidad de q se repita entre dos personas en ordenadores diferentes sea despreciable, de esta manera me olvido de las posiciones de la tabla y pregunto por ese valor que se tendrá que almacenar en una variable de sesión, por ejemplo.

Con este método digamos que se establecerían como una especie de prioridades y los registros los usan un usuario detrás de otro. Para que esto funcione, no se permitiría que un mismo usuario modifique o borre dos objetos a la vez.

Uno llega y quiere modificar el objeto A, bien se añade un registro a la tabla. Posteriormente, compruebo si hay POR ENCIMA un registro que me indique q ese objeto se esta usando. Como no hay ninguno, adelante lo puedes manipular


Objeto Usuario que lo manipula
--------- ------------------------------

A 1234567890


Llega otro usuario que va a manipular le mismo objeto, bien, añadamos un registro en primer lugar SIN COMPROBAR NADA.


Objeto Usuario que lo manipula
--------- ------------------------------

A 1234567890
A 6789876544

Ahora hago la pregunta a la tabla, para ver si hay alguien que lo está utilizando, la respuesta sería que hasta el registro que yo he insertado hay 1 y que tengo que esperar hasta que se borre.
Si llega otro mas que quiere modificar ese mismo, pues se le dice que hay dos y que espere. El ID del usuario es para establecer las PRIORIDADES de uso de ese registro.



Ahora mi pregunta es:¿Hay alguna forma de hacer una consulta hasta un cierto registro de la tabla que cumpla una determinada condición?



Un saludo.

Última edición por dominguez; 05/09/2003 a las 12:51