Cursores desplazables

En las aplicaciones modernas basadas en pantalla, el usuario se desplaza hacia atrás y hacia delante a través de los datos. Para estas aplicaciones, volver a una fila capturada previamente es un problema. Una posibilidad es cerrar y volver a abrir el cursor y, a continuación, recuperar filas hasta que el cursor alcance la fila necesaria. Otra posibilidad es leer el conjunto de resultados, almacenarlo en caché localmente e implementar el desplazamiento en la aplicación. Ambas posibilidades funcionan bien solo con conjuntos de resultados pequeños, y esta última posibilidad es difícil de implementar. Una mejor solución es usar un cursor desplazable, que puede moverse hacia atrás y hacia delante en el conjunto de resultados.

Un cursor desplazable se usa normalmente en aplicaciones modernas basadas en pantalla en las que el usuario se desplaza hacia atrás y hacia delante a través de los datos. Sin embargo, las aplicaciones solo deben usar cursores desplazables cuando los cursores de solo avance no harán el trabajo, ya que los cursores desplazables suelen ser más caros que los cursores de solo avance.

La capacidad de retroceder provoca una pregunta no aplicable a los cursores de solo avance: ¿Debe un cursor desplazable detectar los cambios realizados en las filas capturadas anteriormente? Es decir, ¿debe detectar filas actualizadas, eliminadas e insertadas recientemente?

Esta pregunta surge porque la definición de un conjunto de resultados ( el conjunto de filas que coincide con determinados criterios) no indica cuándo se comprueban las filas para ver si coinciden con esos criterios, ni indica si las filas deben contener los mismos datos cada vez que se capturan. La anterior omisión permite que los cursores desplazables detecten si las filas se han insertado o eliminado, mientras que esta última permite detectar datos actualizados.

La capacidad de detectar cambios a veces es útil, a veces no. Por ejemplo, una aplicación de contabilidad necesita un cursor que omita todos los cambios; Los libros de equilibrio son imposibles si el cursor muestra los cambios más recientes. Por otro lado, un sistema de reservas de aerolíneas necesita un cursor que muestre los cambios más recientes en los datos; sin este cursor, debe volver a consultar continuamente la base de datos para mostrar la disponibilidad de vuelo más actualizada.

Para cubrir las necesidades de diferentes aplicaciones, ODBC define cuatro tipos diferentes de cursores desplazables. Estos cursores varían tanto en gastos como en su capacidad para detectar cambios en el conjunto de resultados. Tenga en cuenta que si un cursor desplazable puede detectar cambios en las filas, sólo puede hacerlo cuando intenta volver a recuperar esas filas; no hay forma de que el origen de datos notifique al cursor los cambios en las filas recuperadas en ese momento. Tenga en cuenta también que la visibilidad de los cambios también se controla mediante el nivel de aislamiento de transacción; para obtener más información, vea Aislamiento de transacciones.

Esta sección contiene los temas siguientes.