Curseurs statiques dans ODBC

Un curseur statique est un curseur dans lequel le jeu de résultats semble statique. Il ne détecte généralement pas les modifications apportées à l’appartenance, à l’ordre ou aux valeurs du jeu de résultats après l’ouverture du curseur. Par exemple, supposons qu’un curseur statique récupère une ligne et qu’une autre application met ensuite à jour cette ligne. Si le curseur statique refétise la ligne, les valeurs qu’elle voit sont inchangées, malgré les modifications apportées par l’autre application.

Les curseurs statiques peuvent détecter leurs propres mises à jour, suppressions et insertions, bien qu’ils ne soient pas nécessaires pour ce faire. Indique si un curseur statique particulier détecte ces modifications par le biais de l’option SQL_STATIC_SENSITIVITY dans SQLGetInfo. Les curseurs statiques ne détectent jamais d’autres mises à jour, suppressions et insertions.

Le tableau d’état de ligne spécifié par l’attribut d’instruction SQL_ATTR_ROW_STATUS_PTR peut contenir SQL_ROW_SUCCESS, SQL_ROW_SUCCESS_WITH_INFO ou SQL_ROW_ERROR pour n’importe quelle ligne. Elle retourne SQL_ROW_UPDATED, SQL_ROW_DELETED ou SQL_ROW_ADDED pour les lignes mises à jour, supprimées ou insérées par le curseur, en supposant que le curseur peut détecter ces modifications.

Les curseurs statiques sont généralement implémentés en verrouillant les lignes du jeu de résultats ou en effectuant une copie, ou instantané, du jeu de résultats. Bien que le verrouillage des lignes soit relativement facile à faire, il présente l’inconvénient de réduire considérablement la concurrence. La création d’une copie permet une plus grande concurrence et permet au curseur de suivre ses propres mises à jour, suppressions et insertions en modifiant la copie. Toutefois, une copie est plus coûteuse à faire et peut différer des données sous-jacentes à mesure que ces données sont modifiées par d’autres.