Ver Mensaje Individual
  #5  
Antiguo 15-11-2012
Sapiem Sapiem is offline
Miembro
 
Registrado: abr 2007
Posts: 24
Reputación: 0
Sapiem Va por buen camino
Sobre proteger

Gracias por las respuestas. me sorprende que algunos dicen "imposible" y siento decir que está equivocado. Mi sistema trabaja en red, cargando la base de datos por red desde una carpeta central compartida. Cinco aplicaciones utilizan la misma base de datos al mismo tiempo, sin dificultad. Ya logré proteger los registros, no dentro de la base de datos, pero si a través de código donde cada aplicación sabrá que registro está bloqueado por cualquier otra instancia de la misma ya sea en la propia red o local.

Mi pregunta era por si existía la posibilidad de crear por ejemplo tablas temporales globales dentro de la base de datos, pues cuando antes intentaba usar esa variante de código, es decir, una instancia del sistema accedía a un registro, creaba una tabla temporal dentro de la base de datos de forma tal que si otra instancia trataba de hacer lo mismo no podía porque ya la tabla estaba creada y por lo tanto significaba que estaba en uso. Quise hacerlo con tablas temporales con toda la intención de que si terminaba de usar el registro, fallaba el sistema por corriente por ejemplo, las tablas temporales desaparecen automáticamente ("drop") y eso no me obligaba a vigilar que tiempo de bloqueo tenía alguna instancia sobre el registro.

Que hice:

Cuando comienzo a usar un registro, creo un file en el directorio de la base de datos y lo mantengo abierto hasta que termine la modificación del registro.
Cualquier otra instancia que quiera modificar el mismo registro, tratará de crear también el mismo archivo y le dará error porque ya existe y está siendo utilizado por otra instancia.
Si la instancia primaria termina de usar el registro, pues entonces cierra el archivo creado y lo elimina, dando así posibilidad a otras instancias de hacer lo mismo.
Si la instancia primaria falla por algún motivo (eléctrico por ejemplo), pues el archivo permanece creado como es lógico, pero ya "nadie" lo tiene abierto como tal, por lo que cualquier otra instancia tratará de crearlo y lo sobreescribirá sin generar error.

Está probado y funciona 100% sin problemas.

Saludos

Muchas gracias.
Responder Con Cita