Partager via


Curseurs et verrouillage

Dans Microsoft SQL Server Compact 4.0, l'instruction SELECT figurant dans une définition de curseur est soumise aux mêmes règles de verrouillage de transaction que celles qui s'appliquent aux autres instructions SELECT. Les verrous de transactions acquis par toute instruction SELECT, notamment l'instruction SELECT dans une définition de curseur, sont contrôlés par les éléments suivants :

  • la définition du niveau d'isolement des transactions pour la connexion ;

  • tout indicateur de verrouillage spécifié dans la clause FROM.

Pour les curseurs de table de base ou d'index, le niveau d'isolement des transactions peut affecter les verrous qui sont acquis.

Important

Pour le niveau d'isolement par défaut READ COMMITTED, SQL Server Compact 4.0 n'acquiert pas de verrous lors du positionnement et de la lecture des données. Les curseurs dans READ COMMITTED requièrent un verrou Sch-S pour protéger la stabilité du schéma pendant que le curseur est ouvert. Des verrous exclusifs sont posés si les données sont modifiées.

Les verrous sont maintenus jusqu'à la fin de la transaction actuelle pour les curseurs et les instructions SELECT indépendantes.

Acquisition des verrous

Bien que les curseurs suivent les mêmes règles que les instructions SELECT indépendantes concernant le type de verrous de transactions acquis, les verrous sont acquis à des moments différents. Les verrous générés par une instruction SELECT indépendante ou par un curseur sont toujours acquis lorsqu'une ligne est requise. Pour une instruction SELECT indépendante, toutes les lignes sont extraites lorsque l'instruction est exécutée. Les curseurs extraient les lignes à différents moments, selon le type du curseur :

  • Les curseurs statiques récupèrent la totalité du jeu de résultats au moment de leur ouverture. Ceci verrouille chaque ligne du jeu de résultats au moment de l'ouverture.

  • Les curseurs de jeux de clés extraient les clés de chaque ligne de l'ensemble de résultats au moment où le curseur est ouvert. Cela entraîne le verrouillage de chaque ligne de l'ensemble de résultats au moment de l'ouverture.

  • Les curseurs en avance seule n'extraient pas de lignes tant qu'elles ne sont pas récupérées. Les verrous ne sont pas acquis sur les lignes tant que les curseurs n'y ont pas été positionnés.

Voir aussi

Concepts

Types de curseurs

Choix d'un type de curseur

Conversions de curseurs implicites

Mise à jour des curseurs pilotés par jeu de clés