Bloqueos

Necesitaría saber si alguien sabe como bloquear registros en delphi contra Interbase, la idea es que mientras esté modificando un registro que los demás usuarios no lo puedan editar.

1 Respuesta

Respuesta
1
La filosofía de Interbase no se basa en los bloqueos tal como lo estás planteando. De todas maneras, si insistes con tu idea, lo que tienes que hacer es un Edit y un Post (así, uno seguido de otro, sin modificar los datos). Luego sigues trabajando como normalmente lo haces. Es un truco que funciona.
Marcelo
Ok, me parece muy interesante tu respuesta, de hecho funciona muy bien, pero mi interesaría que me comentaras un poco sobre como funcionan los bloqueos.
Saludos y desde ya muchas gracias.
Te sugiero que te bajes los manuales de Interbase y los leas. De todos modos (en mérito a que no me sobra el tiempo), acá va lo principal de los "bloqueos" en Interbase.
Interbase utiliza un sistema de bloqueos "optimista", es decir, no bloquea el registro ANTES, sino que al momento de grabarlo se fija si otro lo modificó en el interín. Con ello se aumenta la velocidad y la concurrencia, porque es muy raro que justo dos programas clientes modifiquen el mismo registro.
Además, utiliza un sistema "multiversión". Esto significa que CADA transacción que se inicia en el servidor (todas las actualizaciones a la base de datos ocurren en transacciones), se la marca con un número, y por eso cada vez que se inserta un registro, por ejemplo, se "marca" este registro con un número de transacción, de manera que todas las transacciones iniciadas antes que esta, NO VEN este registro (lo mismo ocurre con las modificaciones o borrados de registros). Las transacciones posteriores sí lo verán.
Por eso, cuando iniciás una transacción y hacés un Edit y un Post como te dije antes, cualquier transacción que se inicie desde otra máquina "verá" a ese registro como "modificado" (aunque como verás, es una modificación falsa). Cuando cierres tu transacción, entonces todos podrán ver los cambios que hiciste en el registro, aunque no modificarlo mientras vos no hayas cerrado la transacción.
Sobre esto tendrías que leer bastante en los manuales de Interbase (y en la ayuda de Delphi, creo que también), los distintos niveles de aislamiento de transacciones, y los modos de actualización (ahora no me acuerdo exactamente cómo empiezan esas propiedades, si es upKeyOnly, o umKeyOnly o algo así).
Si te sirvió, califícame en TodoExpertos. Si no, avisame y veo qué más puedo hacer para ayudarte (eso sí, en este último caso, antes agarrá los libros, así no me extiendo tanto).
Marcelo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas