Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le curseur à ensemble clé se situe entre un curseur statique et un curseur dynamique en raison de sa capacité à détecter les modifications. Comme un curseur statique, il ne détecte pas toujours les modifications apportées à l’appartenance et à l’ordre du jeu de résultats. Comme un curseur dynamique, il détecte les modifications apportées aux valeurs des lignes du jeu de résultats.
Les curseurs pilotés par un jeu de clés sont contrôlés par un ensemble d'identificateurs uniques (clés) appelé jeu de clés. Les clés sont générées à partir d’un ensemble de colonnes qui identifient de manière unique les lignes du jeu de résultats. L’ensemble de clés est constitué des valeurs de clé de toutes les lignes retournées par l’instruction de requête.
Avec les curseurs pilotés par l’ensemble de clés, une clé est générée et enregistrée pour chaque ligne du curseur et stockée sur la station de travail cliente ou sur le serveur. Lorsque vous accédez à chaque ligne, la clé stockée est utilisée pour extraire les valeurs de données actuelles de la source de données. Dans un curseur piloté par un jeu de clés, l’appartenance au jeu de résultats est figée une fois que l’ensemble de clés est entièrement rempli. Par la suite, les ajouts ou mises à jour qui touchent à l'adhésion ne font pas partie de l'ensemble de résultats tant qu'il n'est pas rouvert.
Les modifications apportées aux valeurs de données (effectuées par le propriétaire du jeu de clés ou d’autres processus) sont visibles lorsque l’utilisateur fait défiler le jeu de résultats. Les insertions effectuées en dehors du curseur (par d’autres processus) ne sont visibles que si le curseur est fermé et rouvert. Les insertions effectuées à partir du curseur sont visibles à la fin du jeu de résultats.
Lorsqu'un curseur piloté par un jeu de clés tente de récupérer une ligne qui a été supprimée, la ligne apparaît sous la forme d'un « trou » dans le jeu de résultats. La clé de la ligne existe dans l'ensemble de clés, mais la ligne n'existe plus dans le jeu de résultats. Si les valeurs de clé d’une ligne sont mises à jour, la ligne est considérée comme ayant été supprimée, puis insérée, de sorte que ces lignes apparaissent également sous forme de trous dans le jeu de résultats. Alors qu’un curseur piloté par des ensembles de clés peut toujours détecter les lignes supprimées par d’autres processus, il peut, éventuellement, supprimer les clés des lignes qu’il supprime lui-même. Les curseurs pilotés par keyset qui procèdent ainsi ne peuvent pas détecter leurs propres suppressions, car la preuve a été supprimée.
Une mise à jour vers une colonne clé fonctionne comme une suppression de l’ancienne clé suivie d’une insertion de la nouvelle clé. La nouvelle valeur de clé n’est pas visible si la mise à jour n’a pas été effectuée via le curseur. Si la mise à jour a été effectuée via le curseur, la nouvelle valeur de clé est visible à la fin du jeu de résultats.
Il existe une variation des curseurs pilotés par jeu de clés, appelés curseurs standards pilotés par jeu de clés. Dans un curseur standard piloté par l’ensemble de clés, l’appartenance des lignes dans le jeu de résultats et l’ordre des lignes sont fixes au moment de l’ouverture du curseur, mais les modifications apportées aux valeurs effectuées par le propriétaire du curseur et les modifications validées apportées par d’autres processus sont visibles. Si une modification disqualifie une ligne pour l’appartenance ou affecte l’ordre d’une ligne, la ligne ne disparaît pas ou ne se déplace pas, sauf si le curseur est fermé et rouvert. Les données insérées n’apparaissent pas, mais les modifications apportées aux données existantes apparaissent à mesure que les lignes sont extraites.
Le curseur piloté par l’ensemble de clés est difficile à utiliser correctement, car la sensibilité aux modifications de données dépend de nombreuses circonstances différentes, comme décrit ci-dessus. Toutefois, si votre application n’est pas concernée par les mises à jour simultanées, peut gérer par programmation des clés incorrectes et doit accéder directement à certaines lignes avec clés spécifiques, le curseur piloté par l’ensemble de clés peut fonctionner pour vous. Utilisez le adOpenKeyset CursorTypeEnum pour indiquer que vous souhaitez utiliser un curseur d’ensemble de clés dans ADO.
Voir aussi
Forward-Only curseurs
curseurs statiques
curseurs dynamiques