Transakcije združujejo niz nalog v eno samo izvršilno enoto. Vsaka transakcija se začne z določenim opravilom in konča, ko so vse naloge v skupini uspešno zaključene. Če katera od nalog ne uspe, transakcija ne uspe. Zato ima transakcija samo dva rezultata: uspeh oz neuspeh .
Primer transakcije za prenos 150 USD z računa A na račun B:
1. read(A) 2. A:= A – 150 3. write(A) 4. read(B) 5. B:= B + 150 6. write(B)>
Nedokončani koraki povzročijo neuspeh transakcije. Transakcija baze podatkov mora biti po definiciji atomska, dosledna, izolirana in trajna.
Te so popularno znane kot KISLINA lastnosti. Te lastnosti lahko zagotovijo sočasno izvajanje več transakcij brez konfliktov.
Lastnosti transakcije
- Atomičnost: Izid transakcije je lahko popolnoma uspešen ali popolnoma neuspešen. Celotno transakcijo je treba razveljaviti, če en del ne uspe.
- Konsistentnost: Transakcije ohranjajo omejitve celovitosti s premikanjem baze podatkov iz enega veljavnega stanja v drugo.
- Izolacija: Sočasne transakcije so ločene ena od druge, kar zagotavlja točnost podatkov.
- Vzdržljivost: Ko je transakcija potrjena, njene spremembe ostanejo v veljavi tudi v primeru okvare sistema.
Kako implementirati ukaz za nadzor transakcij z uporabo SQL?
Za nadzor transakcij se uporabljajo naslednji ukazi. Pomembno je omeniti, da teh stavkov ni mogoče uporabiti med ustvarjanjem tabel in se uporabljajo samo z ukazi DML, kot so- VSTAVI , NADGRADNJA , in IZBRIŠI .
Ukaz ZAČNI TRANSAKCIJO
Označuje začetno točko eksplicitne ali lokalne transakcije.
Sintaksa:
ZAČETI TRANSAKCIJO ime_transakcije;
Ukaz SET TRANSACTION
Vrednosti za lastnosti trenutne transakcije, kot sta raven izolacije transakcije in način dostopa, se nastavijo z uporabo izjave SET TRANSACTION v MySQL.
Sintaksa:
NASTAVI TRANSAKCIJO [ PREBERI PISANJE | LE ZA BRANJE ];
hashmap v Javi
Ukaz COMMIT
Če je vse v redu z vsemi izpiski znotraj posamezne transakcije, se vse spremembe zabeležijo skupaj v zbirki podatkov predan . Ukaz COMMIT shrani vse transakcije v bazo podatkov od zadnjega ukaza COMMIT ali ROLLBACK.
Sintaksa:
ZAVEZI;
primer:
Vzorčna tabela 1

izhod
Sledi primer, ki bi izbrisal tiste zapise iz tabele, ki imajo starost = 20, in nato IZVELI spremembe v bazi podatkov.
Poizvedba
DELETE FROM Student WHERE AGE = 20; COMMIT;>
Izhod
Tako bi bili dve vrstici iz tabele izbrisani in stavek SELECT bi izgledal takole,

izhod
Ukaz ROLLBACK
Če pride do kakršne koli napake s katerim koli stavkom SQL, je treba vse spremembe prekiniti. Postopek obračanja sprememb se imenuje povrnitev nazaj . Ta ukaz je mogoče uporabiti samo za razveljavitev transakcij, odkar je bil izdan zadnji ukaz COMMIT ali ROLLBACK.
Sintaksa za ukaz ROLLBACK:
ROLLBACK;
metoda tostring java
primer:
Iz zgornjega primera Vzorčna tabela 1 ,
Izbrišite tiste zapise iz tabele, ki imajo starost = 20 in nato ROLLBACK spremembe v bazi podatkov.
Poizvedba
DELETE FROM Student WHERE AGE = 20; ROLLBACK;>
Izhod

izhod
Ukaz SAVEPOINT
SAVEPOINT ustvari točke znotraj skupin transakcij, v katerih se izvede ROLLBACK.
TOČKA SHRANJEVANJA je točka v transakciji, v kateri lahko transakcijo vrnete nazaj na določeno točko, ne da bi povrnili celotno transakcijo.
Sintaksa za ukaz Savepoint:
SAVEPOINT SAVEPOINT_NAME;
Ta ukaz se uporablja samo pri izdelavi SAVEPOINT med vsemi transakcijami.
Na splošno se ROLLBACK uporablja za razveljavitev skupine transakcij.
Sintaksa za vrnitev nazaj na ukaz Savepoint:
POVRTITE NA SAVEPOINT_NAME;
kadar koli se lahko POVRNITE na katero koli SAVEPOINT, da vrnete ustrezne podatke v prvotno stanje.
primer:
Iz zgornjega primera Vzorčna tabela 1 , Izbrišite tiste zapise iz tabele, ki imajo starost = 20, in nato ROLLBACK spremembe v bazi podatkov tako, da ohranite Savepoints.
Poizvedba
SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.>
Tukaj je SP1 prva SAVEPOINT, ustvarjena pred izbrisom. V tem primeru je prišlo do enega izbrisa.
Po izbrisu se znova ustvari SAVEPOINT SP2.
Izhod

izhod
Do izbrisa je prišlo, predpostavimo, da ste si premislili in se odločili za POVRNITEV NA TOČKO SHRANJEVANJA, ki ste jo identificirali kot SP1, ki je pred izbrisom.
ta izjava razveljavi izbris.
Poizvedba
ROLLBACK TO SP1; //Rollback completed>
Izhod

izhod
Ukaz RELEASE SAVEPOINT
Ta ukaz se uporablja za odstranitev SAVEPOINT-a, ki ste ga ustvarili.
Sintaksa:
SPROSTI SAVEPOINT SAVEPOINT_NAME
Ko je SAVEPOINT sproščena, ne morete več uporabiti ukaza ROLLBACK za razveljavitev transakcij, izvedenih od zadnje SAVEPOINT.
Uporablja se za začetek transakcije baze podatkov in za določanje značilnosti transakcije, ki sledi.
Zaključek
- Stavki SQL so združeni z uporabo transakcij.
- Obljubljajo, da bodo izvedene vse spremembe ali pa nobene.
- Zanesljivost je zagotovljena z lastnostmi ACID, kot so atomičnost, konsistenca, izolacija in vzdržljivost.
- Začnite transakcijo z BEGIN TRANSACTION in jo dokončajte z COMMIT ali ROLLBACK, da dokončate ali razveljavite spremembe.