Als u alle records in één query opvraagt en ze in één keer terughaalt, is dat niet nodig. Alles is verpakt in een impliciete transactie. Dat wil zeggen, zelfs als u een miljoen records terugkrijgt, en zelfs als andere processen de records wijzigen, zult u zien hoe alle miljoen records er op hetzelfde moment uitzagen.
De enige keren dat u echt een transactie (en vaak een specifieke vergrendelingshint) nodig heeft in een alleen-lezen proces zijn:
- U leest de records "stuksgewijze" en heeft niets anders nodig om de waarden te wijzigen terwijl u itereren wel. [Zoals een aangesloten recordset in ADO waar je dan doorheen bladert.]
- Je leest wat data, doet wat berekeningen, leest dan wat gerelateerde data, maar in de veronderstelling dat er in de tussentijd niets is veranderd.
Kortom, u hebt transacties nodig wanneer u wilt dat andere processen uw gegevens tussen SQL-instructies niet verstoren.