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, capturar 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 solo funcionan bien 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 delante y hacia atrás a través de los datos. Sin embargo, las aplicaciones deben usar cursores desplazables solo cuando los cursores de solo avance no realicen el trabajo, ya que los cursores desplazables suelen ser más caros que los cursores de solo avance.

La capacidad de retroceder genera una pregunta no aplicable a los cursores de solo avance: ¿Debe un cursor desplazable detectar los cambios realizados en las filas capturadas previamente? Es decir, ¿debe detectar filas actualizadas, eliminadas y recién insertadas?

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 omisión anterior permite que los cursores desplazables detecten si se han insertado o eliminado filas, mientras que la segunda 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 ignore todos los cambios; Es imposible equilibrar libros si el cursor muestra los cambios más recientes. Por otro lado, un sistema de reservas de líneas aéreas necesita un cursor que muestre los cambios más recientes en los datos. sin este tipo de cursor, debe volver a consultar continuamente la base de datos para mostrar la disponibilidad de vuelos 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, solo puede detectarlos cuando intenta volver a detectar esas filas. No hay ninguna manera de que el origen de datos notifique al cursor los cambios en las filas capturadas actualmente. 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.