Przede wszystkim korzystasz już z transakcji. Niejawnie. Robiąc np. INSERT albo UPDATE. Te instrukcje są objęte transakcją.
Co do pobierania danych - nie widzę tu sensu stosowania transakcji. Nic się nie może stać. Transakcje stosujesz głównie w dwóch przypadkach:
- Wydajność
- Zabezpieczenie integralności danych.
Jeśli chodzi o wydajność, to wyobraź sobie, że masz do zrobienia 100 INSERTÓW. To jest 100 INSERTÓW do jednej tabelki. Jak już wiesz jeden INSERT to jedna transakcja. Rozpoczęcie i zakończenie transakcji trwa jakiś czas. Więc w tym przypadku rozpoczynasz i kończysz 100 transakcji - NIEJAWNIE. Natomiast, jeśli te 100 insertów włożysz w jawną transakcję, to one już nie rozpoczynają swoich niejawnych, a więc trwa to zdecydowanie krócej.
Jeśli chodzi o integralność danych - to transakcje stosujemy tam, gdzie może coś się spieprzyć. Gdzie jeden rekord jest zależny od drugiego.
Standardowym przykładem jest przelew w banku.
Załóżmy taką sytuację: Z konta A przelewamy 100 zł na konto B:
UPDATE account SET amount = amount + 100 WHERE id = B;
UPDATE account SET amount = amount - 100 WHERE id = A;
W tym momencie obydwa updatey są od siebie zależne. Generalnie, jeśli jeden z nich z jakiegoś powodu nie pójdzie, to drugi też nie powinien. No bo, jeśli coś pójdzie nie tak (błąd w oprogramowaniu, utrata zasilania tuż po pierwszym update itd), no to może wyjść na to, że osoba B otrzymała 100 zł, ale osoba A ich wcale nie przekazała. Dlatego też te dwa updatey MUSZĄ iść w transakcji:
BEGIN TRANSACTION
UPDATE account SET amount = amount + 100 WHERE id = B;
UPDATE account SET amount = amount - 100 WHERE id = A;
COMMIT TRANSACTION
(pomijam tutaj obsługę błędów)
W tym momencie, jeśli cokolwiek się stanie po pierwszym update, ale przed drugim (np. utrata zasilania), to nic złego się nie stanie. Transakcja NIE ZOSTANIE scommitowana, a więc zostanie w całości wycofana. Wskutek czego pierwszy UPDATE zostanie cofnięty.
Podobnie, jeśli np. w drugim update będzie jakiś błąd programistyczny, to transakcja też nie zostanie scommitowana.
Właśnie w takich przypadkach należy używać transakcji.