Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Dois-je utiliser des transactions SQL lors de la lecture d'enregistrements ?

Si vous interrogez tous les enregistrements en une seule requête et que vous les récupérez en une seule fois, cela n'est pas nécessaire. Tout est enveloppé dans une transaction implicite. C'est-à-dire que même si vous récupérez un million d'enregistrements, et même si d'autres processus modifient les enregistrements, vous verrez à quoi ressemblaient tous les millions d'enregistrements au même moment.

Les seuls cas où vous auriez vraiment besoin d'une transaction (et, souvent, d'un indice de verrouillage spécifique) dans un processus en lecture seule sont :
- Vous lisez les enregistrements "au coup par coup" et n'avez besoin de rien d'autre pour modifier les valeurs pendant que vous itérer cependant. [Comme un jeu d'enregistrements connecté dans ADO sur lequel vous passez ensuite le curseur.]
- Vous lisez des données, effectuez des calculs, puis lisez des données connexes, mais en supposant que rien n'a changé entre-temps.


En bref, vous avez besoin de transactions lorsque vous souhaitez empêcher les autres processus d'interférer avec vos données entre les instructions SQL.