C# - Tranzakció-kezelés az MS SQL-ben

Transact SQL 27. rész

forráskód letöltése
Az előző részben a tranzakciókkal foglalkoztunk, most pedig folytatjuk ezt a témát. Az eddigiekben szó colt róla, hogy egy tranzakciót visszagörgethetünk a kezdeti állapotba, így semmissé téve az összes változtatást, módosítást, amit a tranzakción belül elvégeztünk. De mi a helyzet akkor, ha mi nem akarjuk az összes módosítást semmissé tenni, vagyis a nem a tranzakció előtti állapotba szeretnénk eljutni, hanem csak egy adott pontig. Erről lesz szó ebben a részben.
A helyzet tehát a következő: elindítjuk a tranzakciót, majd elvégzünk néhány módosítást. Valamilyen esemény bekövetkeztekor azonban vissza kell görgetnünk a tranzakciót, de nem feltétlenül a tranzakció előtti állapotba, hanem mondjuk egy adott módosítás utáni állapotba. Erre két lehetőségünk is van, melyek közül az egyik az ún. mentési pontok alkalmazásával érhetjük el, amikor is a tranzakción belül elmentjük a tranzakció aktuális állapotát, és ehhez az állapothoz bármikor visszatérhetünk.
A másik lehetőség, hogy több nevesített tranzakciót ágyazunk egybe, és tagolva a tranzakcióban elvégzendő műveleteket.
Mentési pontot a SAVE TRANSACTION utasítással hozhatunk létre. Ennek szintaxisa a következő
SAVE TRANSACTION <név>
A <név> megadása kötelező. Az utasításnak használhatjuk a rövidített változatát is (SAVE TRAN). Ezután a <név> paramétert felhasználhatjuk a ROLLBACK utasításnál.
01.sql
Létrehozunk egy TransactionTest nevű adatbázist.
02.sql
Az új adatbázisban létrehozunk egy táblát, benne négy mezővel és néhány rekorddal.
03_BEGIN_TRAN.sql
Ezzel a script-tel indíthatunk el egy új tranzakciót. A tranzakciónak nem adunk nevet, így akár több tranzakciót is indíthatunk egymásba ágyazva, azonban ne felejtsük el, hogy minden elindított tranzakcióhoz kell, hogy tartozzon egy COMMIT vagy egy ROLLBACK utasítás!
04_MODIFY.sql
Módosítjuk az adatokat, illetve beszúrunk egy új rekordot.
05_SAVE_TAN.sql
Elmentjük a tranzakció aktuális állapotát „savepoint” néven.
use TransactionTest;
SAVE TRANSACTION savepoint;
SELECT 'Tranzakció aktuális állapota elmentve!';
06_BACK_TO_SAVEPOINT.sql
Ezzel térhetünk vissza az elmentet állapotba.
USE TransactionTest;
ROLLBACK TRAN savepoint;
SELECT * FROM TestTable;
07_COMMIT.sql
Eltároljuk a tranzakcióban végzett módosításokat.
08_ROLLBACK.sql
Semmissé tesszük a tranzakcióban végzett módosításokat.
09.sql
Töröljük a teszt adatbázist.

Transact SQL cikksorozat

Transact SQL Referencia - Transact SQL 1. rész
Transact SQL további belső változói - Transact SQL 2. rész
Dátumkezelés a Transact SQL-ben - Transact SQL 3. rész
Sztringkezelés a Transact SQL-ben - Transact SQL 4. rész
Folyamatvezérlés eszközei a Transact SQL-ben - Transact SQL 5. rész
Összesítő függvények - Transact SQL 6. rész
Adatbázisok létrehozása, törlése - Transact SQL 7. rész
Adatbázis módosítás lehetőségei - Transact SQL 8. rész
Táblák létrehozása - Transact SQL 9. rész
Táblák módosítása, törlése - Transact SQL 10. rész
Rendszer funkciók - Transact SQL 11. rész
Adatkonvertálási lehetőségek - Transact SQL 12. rész
Tárolt eljárás létrehozása - TransactSQL 13. rész
Triggerek kezelése - Transact SQL 14. rész
Indexek létrehozása - Transact SQL 15. rész
Függvények definiálása - Transact SQL 16. rész
Függvények felüldefiniálása és törlése - Transact SQL 17. rész
Szabályok létrehozása - Transact SQL 18. rész
Alapértelmezett értékek megadása - Transact SQL 19. rész
Nézet táblák létrehozása - Transact SQL 20. rész
Nézettáblák módosítása - Transact SQL 21. rész
Adatbázis és tranzakciós napló mentése - Transact SQL 22. rész
Elmentett adatbázis és tranzakciós napló visszaállítása - Transact SQL 23. rész
Full-Text Catalog létrehozása, használata - Transact SQL 24. rész
Full-Text Catalog további lehetőségei - Transact SQL 25. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 26. rész

Tranzakció-kezelés az MS SQL-ben - Transact SQL 27. rész

SET parancsok - Transact SQL 28. rész