Lo que pasa es que interbase tiene una visión
super optimista de los bloqueos.... y estos solamente ocurren dentro de una transacción cuando un registro es modificado.
Otros usuarios podran seguir incluso haciendo selects sobre los registros borrados dentro de una transacción siempre que esta no haya recibido la sentencia commit.
Si queres que media vez un usuario lee un registro este no sea modificado/eliminado por otro usuario (una vision pesimista) entonces, podes utilizar el truco de hacer un update "inutil" sobre el registro para que este sea bloqueado.
Esto lo podes conseguir haciendo un update sobre la tabla.
Código:
Update tabla
set campo = campo
where llave = LaLlave;
Hasta luego.
