sql >> Database >  >> RDS >> Sqlserver

Moet ik SQL-transacties gebruiken tijdens het lezen van records?

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.



  1. Lees elke JSON in de lijst met sleutel-waardeparen (EAV-indeling) in SQL Server

  2. Sql Server werkt records niet bij

  3. Wijs de totale waarde van de maand toe aan elke dag van de maand

  4. mysql - query voor threadlijst van berichten met specifieke voorwaarden