logo

TRANSAKCIE SQL

Transakcie zoskupujú súbor úloh do jednej vykonávacej jednotky. Každá transakcia začína konkrétnou úlohou a končí, keď sú všetky úlohy v skupine úspešne dokončené. Ak ktorákoľvek z úloh zlyhá, transakcia zlyhá. Transakcia má teda iba dva výsledky: úspech alebo zlyhanie .

Príklad transakcie prevodu 150 USD z účtu A na účet B:

1. read(A) 2. A:= A – 150 3. write(A) 4. read(B) 5. B:= B + 150 6. write(B)>

Neúplné kroky vedú k zlyhaniu transakcie. Databázová transakcia musí byť podľa definície atómová, konzistentná, izolovaná a trvácna.
Tieto sú ľudovo známe ako KYSELINA vlastnosti. Tieto vlastnosti môžu zabezpečiť súbežné vykonávanie viacerých transakcií bez konfliktu.



Vlastnosti transakcie

  • Atómovosť: Výsledok transakcie môže byť buď úplne úspešný, alebo úplne neúspešný. Celá transakcia sa musí vrátiť späť, ak jedna jej časť zlyhá.
  • konzistencia: Transakcie zachovávajú obmedzenia integrity presunom databázy z jedného platného stavu do druhého.
  • Izolácia: Súbežné transakcie sú od seba izolované, čo zaisťuje presnosť údajov.
  • Trvanlivosť: Po potvrdení transakcie zostávajú jej zmeny v platnosti aj v prípade zlyhania systému.

Ako implementovať príkaz riadenia transakcií pomocou SQL?

Nasledujúce príkazy sa používajú na riadenie transakcií. Je dôležité poznamenať, že tieto príkazy nie je možné použiť pri vytváraní tabuliek a používajú sa iba s príkazmi DML, ako napr. VLOŽIŤ , AKTUALIZOVAŤ , a VYMAZAŤ .

Príkaz BEGIN TRANSACTION

Označuje počiatočný bod explicitnej alebo lokálnej transakcie.

Syntax:

BEGIN TRANSACTION názov_transakcie ;

Príkaz SET TRANSACTION

Hodnoty vlastností aktuálnej transakcie, ako je úroveň izolácie transakcie a režim prístupu, sa nastavujú pomocou príkazu SET TRANSACTION v MySQL.

Syntax:

NASTAVIŤ TRANSAKCIU [ ČÍTAJ NAPÍŠ | IBA NA ČÍTANIE ];

Príkaz COMMIT

Ak je všetko v poriadku so všetkými výpismi v rámci jednej transakcie, všetky zmeny sa zaznamenajú spoločne do databázy je tzv spáchaný . Príkaz COMMIT uloží všetky transakcie do databázy od posledného príkazu COMMIT alebo ROLLBACK.

Syntax:

COMMIT;

rajesh khanna

Príklad:

Vzorová tabuľka1

výkon

výkon

Nasleduje príklad, ktorý vymaže z tabuľky tie záznamy, ktoré majú vek = 20, a potom POTVRDÍ zmeny v databáze.

Dopyt

DELETE FROM Student WHERE AGE = 20; COMMIT;>

Výkon

Dva riadky z tabuľky by sa teda odstránili a príkaz SELECT by vyzeral takto:

výkon

výkon

Príkaz ROLLBACK

Ak sa vyskytne chyba v ktoromkoľvek zo zoskupených príkazov SQL, všetky zmeny je potrebné zrušiť. Proces obrátenia zmien je tzv rollback . Tento príkaz možno použiť len na zrušenie transakcií od posledného príkazu COMMIT alebo ROLLBACK.

Syntax príkazu ROLLBACK:

ROLLBACK;

Príklad:

Z vyššie uvedeného príkladu Vzorová tabuľka 1 ,
Vymažte z tabuľky tie záznamy, ktoré majú vek = 20 a potom VRÁŤTE zmeny v databáze.

pvr plná forma

Dopyt

DELETE FROM Student WHERE AGE = 20; ROLLBACK;>

Výkon

výkon

výkon

Príkaz SAVEPOINT

SAVEPOINT vytvára body v rámci skupín transakcií, v ktorých sa má ROLLBACK.
SAVEPOINT je bod v transakcii, v ktorom môžete vrátiť transakciu späť do určitého bodu bez vrátenia celej transakcie.

Syntax príkazu Savepoint:

SAVEPOINT SAVEPOINT_NAME;

Tento príkaz sa používa iba pri vytváraní SAVEPOINT medzi všetkými transakciami.
Vo všeobecnosti sa ROLLBACK používa na zrušenie skupiny transakcií.

Syntax pre návrat späť na príkaz Savepoint:

NÁVRAT DO SAVEPOINT_NAME;

hashmap

môžete kedykoľvek ROLLBACK na ktorýkoľvek SAVEPOINT vrátiť príslušné údaje do pôvodného stavu.

Príklad:

Z vyššie uvedeného príkladu Vzorová tabuľka 1 , Odstráňte z tabuľky tie záznamy, ktoré majú vek = 20 a potom VRÁŤTE zmeny v databáze ponechaním bodov uloženia.

Dopyt

SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.>

Tu je SP1 prvý SAVEPOINT vytvorený pred vymazaním. V tomto príklade došlo k jednému vymazaniu.
Po opätovnom vymazaní sa vytvorí SAVEPOINT SP2.

Výkon

výkon

výkon

Prebehlo vymazanie, predpokladajme, že ste si to rozmysleli a rozhodli ste sa VRÁTIŤ NA ULOŽENIE, ktoré ste identifikovali ako SP1, ktoré je pred vymazaním.
vymazanie sa týmto vyhlásením zruší.

Dopyt

ROLLBACK TO SP1; //Rollback completed>

Výkon

výkon

výkon

Príkaz RELEASE SAVEPOINT

Tento príkaz sa používa na odstránenie SAVEPOINT, ktorý ste vytvorili.

Syntax:

UVOĽNITE SAVEPOINT SAVEPOINT_NAME

Po uvoľnení SAVEPOINT už nemôžete použiť príkaz ROLLBACK na zrušenie transakcií vykonaných od posledného SAVEPOINT.
Používa sa na spustenie databázovej transakcie a používa sa na špecifikáciu charakteristík transakcie, ktorá nasleduje.

Záver

  • Príkazy SQL sú zoskupené pomocou transakcií.
  • Sľubujú, že buď budú vykonané všetky zmeny, alebo nebudú žiadne.
  • Spoľahlivosť je zabezpečená vlastnosťami ACID, ktorými sú atomicita, konzistencia, izolácia a odolnosť.
  • Začnite transakciu s BEGIN TRANSACTION a dokončite ju pomocou COMMIT alebo ROLLBACK na dokončenie alebo vrátenie zmien.