Se stai interrogando tutti i record in un'unica query e li ritiri in una volta sola, non è necessario. Tutto è racchiuso in una transazione implicita. Vale a dire, anche se torni indietro di un milione di record e anche se altri processi stanno modificando i record, vedrai come apparivano tutti e un milione di record nello stesso momento.
Le uniche volte in cui avresti davvero bisogno di una transazione (e, spesso, di un suggerimento di blocco specifico) in un processo di sola lettura sono:
- Leggi i record "a pezzi" e non hai bisogno di nient'altro per modificare i valori mentre iterare però. [Ad esempio un recordset connesso in ADO che si passa poi attraverso il cursore.]
- Leggi alcuni dati, esegui alcuni calcoli, quindi leggi alcuni dati correlati, ma supponendo che nulla sia cambiato nel frattempo.
In breve, sono necessarie transazioni quando si desidera impedire ad altri processi di interferire con i dati tra le istruzioni SQL.