logo

TRANSAKCE SQL

Transakce seskupují sadu úkolů do jedné prováděcí jednotky. Každá transakce začíná konkrétní úlohou a končí, když jsou všechny úkoly ve skupině úspěšně dokončeny. Pokud některá z úloh selže, transakce selže. Transakce má tedy pouze dva výsledky: úspěch nebo selhání .

Příklad transakce převodu 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 vedou k selhání transakce. Databázová transakce musí být podle definice atomická, konzistentní, izolovaná a trvanlivá.
Ty jsou lidově známé jako KYSELINA vlastnosti. Tyto vlastnosti mohou zajistit souběžné provádění více transakcí bez konfliktu.



Vlastnosti transakce

  • Atomicita: Výsledek transakce může být buď zcela úspěšný, nebo zcela neúspěšný. Celá transakce musí být vrácena zpět, pokud jedna její část selže.
  • Konzistence: Transakce zachovávají omezení integrity přesouváním databáze z jednoho platného stavu do jiného.
  • Izolace: Souběžné transakce jsou od sebe izolovány, což zajišťuje přesnost dat.
  • Trvanlivost: Jakmile je transakce potvrzena, její změny zůstávají v platnosti i v případě selhání systému.

Jak implementovat příkaz řízení transakcí pomocí SQL?

Pro řízení transakcí se používají následující příkazy. Je důležité si uvědomit, že tyto příkazy nelze použít při vytváření tabulek a používají se pouze s příkazy DML, jako je- VLOŽIT , AKTUALIZACE , a VYMAZAT .

Příkaz BEGIN TRANSACTION

Označuje počáteční bod explicitní nebo místní transakce.

Syntax:

BEGIN TRANSACTION název_transakce ;

Příkaz SET TRANSACTION

Hodnoty vlastností aktuální transakce, jako je úroveň izolace transakce a režim přístupu, se nastavují pomocí příkazu SET TRANSACTION v MySQL.

Syntax:

NASTAVIT TRANSAKCI [ ČTĚTE ZÁPIS | POUZE KE ČTENÍ ];

Příkaz COMMIT

Pokud je vše v pořádku se všemi výpisy v rámci jedné transakce, jsou všechny změny zaznamenány společně do databáze je volána angažovaný . Příkaz COMMIT uloží všechny transakce do databáze od posledního příkazu COMMIT nebo ROLLBACK.

Syntax:

SPÁCHAT;

Příklad:

Ukázková tabulka1

výstup

výstup

Následuje příklad, který by odstranil ty záznamy z tabulky, které mají věk = 20, a poté COMMIT změny v databázi.

Dotaz

DELETE FROM Student WHERE AGE = 20; COMMIT;>

Výstup

Dva řádky z tabulky by tedy byly odstraněny a příkaz SELECT by vypadal takto:

výstup

výstup

Příkaz ROLLBACK

Pokud se u kteréhokoli ze seskupených příkazů SQL vyskytne chyba, je třeba všechny změny přerušit. Proces vracení změn se nazývá vrácení zpět . Tento příkaz lze použít pouze ke zrušení transakcí od posledního příkazu COMMIT nebo ROLLBACK.

vložení řazení java

Syntaxe příkazu ROLLBACK:

NÁVRAT;

Příklad:

Z výše uvedeného příkladu Vzorová tabulka 1 ,
Odstraňte z tabulky ty záznamy, které mají věk = 20, a poté VRTULUJTE změny v databázi.

Dotaz

DELETE FROM Student WHERE AGE = 20; ROLLBACK;>

Výstup

výstup

výstup

Příkaz SAVEPOINT

ULOŽIT BOD vytváří body v rámci skupin transakcí, ve kterých lze ROLLBACK.
SAVEPOINT je bod v transakci, ve kterém můžete vrátit transakci zpět do určitého bodu, aniž byste museli vrátit zpět celou transakci.

Syntaxe příkazu Savepoint:

SAVEPOINT SAVEPOINT_NAME;

Tento příkaz se používá pouze při vytváření SAVEPOINT mezi všemi transakcemi.
Obecně se ROLLBACK používá ke zrušení skupiny transakcí.

Syntaxe pro návrat zpět k příkazu Savepoint:

NÁVRAT NA SAVEPOINT_NAME;

můžete kdykoli ROLLBACK na libovolný SAVEPOINT vrátit příslušná data do původního stavu.

Příklad:

Z výše uvedeného příkladu Vzorová tabulka 1 , Odstraňte z tabulky ty záznamy, které mají věk = 20, a poté VRÁTNĚTE změny v databázi zachováním bodů uložení.

Dotaz

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

Zde je SP1 první SAVEPOINT vytvořený před vymazáním. V tomto příkladu došlo k jednomu vymazání.
Po opětovném smazání se vytvoří SAVEPOINT SP2.

Výstup

výstup

výstup

Proběhlo smazání, předpokládejme, že jste si to rozmysleli a rozhodli jste se VRÁTIT SE na SAVEPOINT, který jste identifikovali jako SP1, který je před smazáním.
smazání je tímto příkazem zrušeno.

Dotaz

ROLLBACK TO SP1; //Rollback completed>

Výstup

výstup

výstup

Příkaz RELEASE SAVEPOINT

Tento příkaz se používá k odstranění SAVEPOINT, který jste vytvořili.

Syntax:

UVOLNĚTE SAVEPOINT SAVEPOINT_NAME

Jakmile byl SAVEPOINT uvolněn, již nemůžete použít příkaz ROLLBACK ke zrušení transakcí provedených od posledního SAVEPOINT.
Používá se k zahájení databázové transakce a používá se ke specifikaci charakteristik transakce, která následuje.

Závěr

  • Příkazy SQL jsou seskupeny pomocí transakcí.
  • Slibují, že buď budou provedeny všechny změny, nebo nebudou žádné.
  • Spolehlivost je zajištěna vlastnostmi ACID atomicity, konzistence, izolace a trvanlivosti.
  • Zahajte transakci pomocí BEGIN TRANSACTION a dokončete ji pomocí COMMIT nebo ROLLBACK pro dokončení nebo vrácení změn.