Ver Mensaje Individual
  #5  
Antiguo 01-07-2003
mpedra mpedra is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires (Arg)
Posts: 19
Reputación: 0
mpedra Va por buen camino
Bueno gracias de todas formas, despues de leerme por lo menos 15 manuales de IBM donde no pude encontrar mas que un par de ejemplos y un monton de información dispersa y mal organizada, di con la solución:

La consigna es no poder editar un registro que está siendo editado por otro usuario.

Lo primero que hay que tener en cuenta que esta estrategia de acceso se configura para la base de datos a la que estemos accediendo. Es decir al menos hasta ahora....

==> Setear el parametro LOCKTIMEOUT a 0 (mediante el Control Central en la base de datos, Modificar parametros)
Se reinicia la base y ya estamos en condiciones.

==> Ahora para hacer el bloqueo del registro hay que tener en cuenta el nivel de aislamiento... prefiero no explicar esta parte porque a pesar de que lo he hecho funcionar no lo he entendido muy bien.

El SQL necesario para lograr el bloqueo es:

SELECT * FROM TABLA WHERE CONDICIONES
FOR UPDATE
WITH RR

donde RR es el nivel de aislamiento que le quiero dar al acceso.
Es interesante para entender que pasa con los diferentes nivles de aislamiento probar diferentes convinaciones entre el nivel de aislamiento de la base y del acceso, y que pasa con la obtención de registros que han sido modificados... y no 'comiteados'



Saludos

Marcos
__________________
Marcos
Responder Con Cita