Vlastnosti transakcie
Transakcie, často známe pod pojmom KYSELINA, majú štyri hlavné všeobecné vlastnosti.
- Atomicita: To zaručuje, že všetky úlohy vo vnútri pracovnej jednotky sa úspešne dokončia; v opačnom prípade sa proces ukončí a predchádzajúce procesy sa obnovia do starého stavu.
- Konzistencia: To znamená, že pri dostatočne nasadenom procese sa databáza aktualizuje zodpovedajúcim spôsobom.
- Izolácia: Pomáha transakciám spolupracovať navzájom a individuálne a transparentne.
- Trvanlivosť: To zaisťuje, že v prípade poruchy systému sa zachová výsledok alebo dôsledok spáchanej transakcie.
Pracovné transakcie MySQL:
V rámci MySQL sa tieto dva pojmy, Commit a Rollback, primárne používajú iba pre MySQL transakcie. Transakcie sa začínajú iba deklaráciou ZAČÍNAME a končia sa deklaráciou COMMIT alebo ROLLBACK. Inštrukcie SQL tvoria väčšinu transakcie medzi začiatočnými aj zastavovacími príkazmi. Takéto série udalostí sú bez ohľadu na použitý konkrétny programovací jazyk. Vytvoríte vhodnú cestu v akomkoľvek jazyku, ktorý používate na zostavenie aplikácie. Nasledujúce príkazy SQL je možné implementovať pomocou funkcie mysql query ().
- ZAČAŤ: Začnite svoj proces alebo transakciu poskytnutím inštrukcie BEGIN WORK SQL.
- Pridať príkaz SQL: jeden alebo dokonca viac príkazov SQL, ako napríklad SELECT, INSERT, UPDATE a DELETE. Potvrďte, aj keď nie je chyba a všetko je v súlade s vašimi očakávaniami.
- ZÁVÄZOK: Po vykonaní úspešnej transakcie musí byť zadaná inštrukcia COMMIT, aby sa zmeny všetkých pridružených tabuliek mohli prejaviť naplno.
- ROLLBACK: Ak dôjde k poruche, je skutočne vhodné poslať príkaz ROLLBACK na vrátenie každej tabuľky uvedenej v transakcii do pôvodného stavu.
- AUTOMATICKÉ VYMENOVANIE: Štandardne MySQL aplikuje úpravy natrvalo na databázu. Ak je AUTOCOMMIT nastavený na 1 (štandardný), potom sa každý dotaz SQL (bez ohľadu na to, či je alebo nie je v transakcii) považuje za dokončenú transakciu a potvrdzuje sa, kým nebude štandardne dokončený. Ak sa chcete vyhnúť automatickému potvrdeniu, nastavte AUTOCOMMIT na 0.
Príklad 01: Zapnutý režim AutoCommit:
MySQL pracuje s fázou Autocommit, ktorá je predvolene povolená. Zaisťuje, že MySQL ukladá zmeny na disku a vytvára ich neustále, pokiaľ spustíme dotaz, ktorý upraví (zmení) tabuľku. Nie je potrebné ťah vrátiť späť. Skúsme to s režimom AUTOCOMMIT. Otvorte shell príkazového riadku MySQL a na začiatok zadajte svoje heslo.
Vezmite si príklad tabuľky „knihy“, ktorá bola vytvorená v databáze „data“. Momentálne sme na ňu zatiaľ nevykonali žiadny dotaz.
>> SELECT * FROM data.kniha;
Krok 2: Týmto procesom je aktualizácia tabuľky „kniha“. Aktualizujme hodnotu stĺpca „Autor“, kde je „Názov“ knihy „Domov“. Môžete vidieť, že zmeny boli úspešne vykonané.
>> AKTUALIZÁCIA údajov.kniha SET Autor = 'Cristian Steward' KDE Meno = 'Domov';
Pohľadom na aktualizovanú tabuľku máme upravenú hodnotu autora, kde „meno“ je „domov“.
>> SELECT * FROM data.kniha;
Pomocou príkazu ROLLBACK vrátime zmeny jednoduchým pridaním nižšie uvedeného dotazu. Môžete vidieť, že dotaz ROLLBACK tu nefunguje, pretože ukazuje, že „ovplyvnené 0 riadkov“.
>> ROLLBACK;
Dokonca vidíte aj tabuľku. Tabuľka nemá po vykonaní príkazu ROLLBACK zatiaľ žiadne zmeny. To znamená, že ROLLBACK nefunguje, keď máme predvolene zapnutý AUTOCOMMIT.
>> SELECT * FROM data.kniha;
Príklad 02: Režim AutoCommit vypnutý:
Ak chcete vrátiť vykonané zmeny späť, skúsme vypnúť režim AUTOCOMMIT. Na rovnakom príklade tabuľky „kniha“ v nej urobíme niekoľko zmien. Deklaráciu START TRANSACTION použijeme na deaktiváciu fázy automatického potvrdenia alebo jednoducho zadáme nasledujúci príkaz na vypnutie AUTOCOMMITU.
>> SET AUTOCOMMIT = 0;Povedzme, že máme v databáze tú istú „knihu“ tabuľky a musíme v nej urobiť zmeny. Potom tieto zmeny vráťte späť k starým.
>> SELECT * FROM data.kniha;
Ak ste nevypli režim AUTOCOMMIT, začnite dotazom START TRANSACTION v prostredí príkazového riadku, ako je uvedené nižšie.
>> ZAČAŤ TRANSAKCIU;
Rovnakú tabuľku budeme aktualizovať pomocou príkazu UPDATE tak, že nastavíme „Autor“ na „Aliana“, kde „Názov“ knihy bude „Sen“. Urobte to pomocou nižšie uvedeného príkazu. Uvidíte, že zmeny sa uskutočnia úspešne a efektívne.
>> AKTUALIZÁCIA údajov.kniha SET Autho = 'Aliana' KDE Meno = 'Sen';
Poďme skontrolovať, či vyššie uvedený dotaz fungoval perfektne a vykonal zmeny v tabuľke alebo nie. Aktualizovanú tabuľku môžete skontrolovať ako vždy pomocou nižšie uvedeného príkazu SELECT.
>> SELECT * FROM data.kniha;Ako je uvedené nižšie, môžete vidieť, že dopyt fungoval skvele.
Teraz je rad na príkaze ROLLBACK, aby vykonal svoju funkciu. Vyskúšajte príkaz ROLLBACK v príkazovom riadku, ktorý vám umožní vrátiť poslednú aktualizáciu späť do tabuľky.
>> ROLLBACK;
Poďme skontrolovať, či bol dotaz ROLLBACK spracovaný tak, ako má, alebo nie. Z tohto dôvodu musíte znova skontrolovať tabuľku „rezervovať“ pomocou príkazu „VYBRAŤ“ ako vždy.
>> SELECT * FROM data.kniha;Z nižšie uvedeného výstupu môžete vidieť, že ROLLBACK konečne fungoval. Vrátilo zmeny vykonané dotazom UPDATE v tejto tabuľke.
Záver:
To je všetko pre transakcie MySQL. Dúfam, že vám tento sprievodca pomôže pohodlne vykonávať transakcie MySQL.