Transakcie v SQL Kroky na vykonanie transakcií s príkladmi

Obsah:

Anonim

Úvod do transakcií v SQL

Transakcia v SQL všeobecne známa ako uskutočňovanie platieb (odosielanie, prijímanie, nákup atď.), Ale pokiaľ ide o technické oblasti, je to spôsob, ako aktualizovať logickú jednotku informácií v databáze.

Transakcia je implementácia jednej alebo viacerých zmien do databázy. Môžeme zoskupiť viac dotazov SQL a spustiť naraz v transakcii. Všetky dotazy SQL by sa vykonali naraz alebo by sa všetky vrátili späť. Výsledkom by boli iba dva výsledky: úspech alebo neúspech.

Transakcia, ktorá už bola potvrdená, nemôže byť obnovením, môže byť obnovená, iba ak nie je transakcia potvrdená. MYSQL automaticky odovzdá zmeny do databázy, ak sú všetky dotazy úspešne vykonané. Ak chcete explicitne vykonať zmeny v databáze, musíte najprv zakázať automatické odovzdanie príkazom -

Syntax: SET autocommit = 0;

Vlastnosti transakcie

Nasledujú dôležité vlastnosti transakcií, každá transakcia sa musí riadiť týmito vlastnosťami

1. Atómicita

Transakcia musí byť atómová, stredná manipulácia s údajmi by sa mala dokončiť pre určitú logickú jednotku. Táto vlastnosť zaisťuje, že zmeny údajov sa uskutočňujú úplne inak, čím sa transakcia vráti.

2. Konzistentnosť

Po dokončení transakcie budú všetky dostupné záznamy konzistentné počas celej transakcie. Táto vlastnosť zaisťuje, že stav databázy bol prepnutý po úspešnom potvrdení alebo nie.

3. Izolácia

Izolácia sa týka zmien údajov v určitej logickej jednotke, ktorá by nemala mať vplyv na inú jednotku. Umožňuje transakciu vykonávať nezávisle.

4. Trvanlivosť

Zmeny vykonané počas transakcií by mali byť v systéme trvalé. V prípade systémovej chyby táto vlastnosť tiež zabezpečuje, že zmeny údajov nastanú alebo nie.

Vyššie uvedená vlastnosť transakcie sa nazýva aj vlastnosť ACID.

Kroky transakcie

1. Začnite

Transakcia sa môže vyskytnúť pri viacerých spusteniach SQL, ale všetky SQL by sa mali spustiť naraz. Ak niektorá transakcia zlyhá, celá transakcia bude vrátená. Príkaz na začatie transakcie je „ZAČIATOK TRANSAKCIE“ .Začína skratka pre ZAČIATOK TRANSAKCIE.

Syntax: ZAČIATOK TRANSAKCIE;

2. Záväzok

Potvrdenia trvalo odrážajú zmeny v databáze. Príkaz na začatie transakcie je „POVOLIŤ“.

Syntax: COMMIT;

3. Vrátenie

Vrátenie zmien sa používa na vrátenie zmien, tj záznam sa nezmení, bol by v predchádzajúcom stave. Príkaz na začatie transakcie je „ROLLBACK“.

Syntax: ROLLBACK;

4. Bod uloženia

SAVEPOINT je tiež výpis z transakcie. Tento príkaz sa použil na vytvorenie bodu uloženia v systéme tak, aby operácia ROLLBACK mohla dosiahnuť stav bodu uloženia.

5. Uvoľnite bod Savepoint

RELEASE SAVEPOINT je príkaz na uvoľnenie bodu uloženia a pamäte spotrebovaného systémom pri vytváraní bodu uloženia.

Syntax: RELEASE SAVEPOINT SP

Poznámky - SP je názov úložného bodu, keď bol tento úložný bod vytvorený pred začiatkom transakcie.

6. Nastavte Transaction

Príkaz SET TRANSACTION sa používa na určenie atribútu transakcie, ako napríklad, že daná transakcia je relácia len na čítanie alebo na čítanie a zápis.

Syntax : SET TRANSACTION (READ-WRITE | IBA READ);

Transakcia sa používa na vykonanie zložitých zmien v databáze. Používa sa hlavne pri zmene informácií týkajúcich sa bankovníctva na relačnú databázu.

Transakcia je podporovaná motorom MYSQL InnoDB. V predvolenom nastavení zostáva automatické odovzdanie povolené, preto vždy, keď sa vykoná akékoľvek vykonanie SQL po vykonaní, automaticky dôjde.

Transakcie pomocou SQL

Príklad č. 1

Banková transakcia: Poplatok za účet vo výške 50000 od sporiaceho účtu a zaúčtovaný na účet pôžičky A.

Začať transakciu: Táto začiatočná transakcia skonvertuje všetky dotazy SQL na jednu jednotku transakcie.

UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;

Tento dotaz SQL odpočíta sumu z existujúceho zostatku na účte.

UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;

Tento dotaz SQL pridá sumu na používateľský úverový účet.

Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');

Tento dotaz SQL vloží nový záznam do tabuľky podrobností o transakciách, táto tabuľka obsahuje podrobnosti o všetkých transakciách používateľov. Ak bol celý dotaz úspešne vykonaný, príkaz COMMIT musí byť vykonaný, pretože zmeny musia byť trvalo uložené v databáze.

Potvrdenie: Tento príkaz potvrdenia uloží zmeny vyvolané transakciou do databázy. Ak niektorá z transakcií počas vykonávania zlyhá, mal by sa vykonať príkaz ROLLBACK, aby sa vrátila úplná transakcia

Vrátenie zmien: Vrátenie zmien sa uskutoční, keď akýkoľvek dotaz zlyhá počas vykonávania.

Príklad č. 2

Transakcia zásob: V daných položkách je k dispozícii 6 položiek.

Na vykonanie transakcie sa vykoná nasledujúci príkaz START TRANSAKCIA.

Teraz spustite príkaz SET AUTOCOMMIT = 0 ; zakázať automatické odovzdanie

Teraz sa vykonáva nasledujúci príkaz na odstránenie záznamu z tabuľky položiek

Teraz je k dispozícii záznam v tabuľke 4, tj záznamy dočasne odstránené z položiek tabuľky

Po vykonaní príkazu ROLLBACK na vrátenie zmien by odstránený záznam bol k dispozícii v položkách tabuľky ako predtým pred začatím transakcie.

Ak by sa znova použila rovnaká operácia vymazania, potom by sa operácia COMMIT po jej zmene trvalo uložila do databázy

Teraz vidíme, že aj napriek tomu, že príkaz ROLLBACK bol stále v novom stave, znamená to, že akonáhle sa vykonané zmeny v operácii COMMIT nedajú vrátiť späť, pretože natrvalo zmení zmeny v databáze;

Výhody použitia transakcie v SQL

a) Použitie transakcie zlepšuje výkon , keď pri vkladaní 1 000 záznamov pomocou transakcií v takom prípade by bol čas kratší ako pri normálnom vkladaní. Rovnako ako v normálnej transakcii, zakaždým, keď sa COMMIT uskutoční po každom vykonaní dotazu a zvýši by sa čas vykonávania zakaždým, zatiaľ čo v transakcii nie je potrebné vykonať príkaz COMMIT po každom dotaze SQL. COMMIT na konci by trvalo odrážal všetky zmeny v databáze naraz. Tiež pri použití transakcie by vrátenie zmien bolo oveľa jednoduchšie ako pri normálnej transakcii. ROLLBACK vráti všetky zmeny naraz a ponechá systém v predchádzajúcom stave.

b) Transakcia zabezpečuje integritu údajov v relačnej databáze. Väčšina databázy používa na uchovávanie údajov viacero tabuliek a pri aktualizácii sa môžu v tom istom čase vyskytnúť zmeny vo viacerých tabuľkách, ak niektorý z dotazov SQL zlyhá, potom by transakcia ponechala údaje nezmenené.

záver

Použitie transakcií je osvedčený postup aktualizácie informácií pre logickú jednotku v relačnej databáze. Pri implementácii transakcie by databázový stroj mal podporovať transakciu, ako je modul InnoDB. Transakcia ako jednotka príkazov SQL sa dá vrátiť späť pomocou jediného príkazu ROLLBACK. Transakcia zabezpečuje integritu údajov a zvyšuje výkon databázy.

Odporúčané články

Toto je sprievodca transakciami v SQL. Tu diskutujeme úvod, vlastnosti, kroky, príklady transakcií v SQL spolu s výhodami použitia transakcie v SQL.

  1. Čo je to SQL
  2. SQL Management Tools
  3. Zobrazenia SQL
  4. Typy pripojení na serveri SQL Server
  5. Top 6 typov spojení v MySQL s príkladmi