Vlastnosti transakce
Transakce, často známé pod pojmem KYSELINA, mají čtyři hlavní obecné vlastnosti.
- Atomicita: To zaručuje, že všechny úkoly uvnitř pracovní jednotky budou úspěšně dokončeny; jinak, právě v bodě selhání je proces ukončen a předchozí procesy jsou obnoveny do starého stavu.
- Konzistence: To znamená, že při dostatečně zavázaném procesu se databáze aktualizuje odpovídajícím způsobem.
- Izolace: Pomáhá transakcím pracovat navzájem a individuálně a transparentně.
- Trvanlivost: Tím je zajištěno, že v případě poruchy systému se zachová výsledek nebo důsledek potvrzené transakce.
Pracovní transakce MySQL:
V rámci MySQL se tyto dva pojmy, Commit a Rollback, používají primárně pouze pro MySQL transakce. Transakce začínají pouze deklarací BEGIN WORK a končí buď deklarací COMMIT, nebo deklarací ROLLBACK. Pokyny SQL tvoří většinu transakce mezi počátečními a koncovými příkazy. Taková řada událostí je bez ohledu na použitý konkrétní programovací jazyk. Vytvoříte vhodnou cestu v jakémkoli jazyce, který používáte k sestavení aplikace. Níže uvedené příkazy SQL lze implementovat pomocí funkce mysql query ().
- ZAČÍT: Spusťte svůj proces nebo transakci poskytnutím instrukce BEGIN WORK SQL.
- Přidat příkaz SQL: jeden nebo dokonce více příkazů SQL, například SELECT, INSERT, UPDATE a DELETE. Potvrďte, i když není chyba a vše je v souladu s vašimi očekáváními.
- SPÁCHAT: Po provedení úspěšné transakce musí být uložena instrukce COMMIT, aby se úpravy všech přidružených tabulek mohly plně projevit.
- ROLLBACK: Pokud dojde k poruše, je opravdu vhodné poslat instrukci ROLLBACK k vrácení každé tabulky uvedené v transakci na její původní stav.
- AUTOMOBIT Ve výchozím nastavení MySQL aplikuje úpravy trvale na databázi. Pokud je AUTOCOMMIT nastaven na 1 (standardní), pak se každý dotaz SQL (ať už uvnitř transakce či nikoli) považuje za dokončenou transakci a potvrzuje se, dokud není ve výchozím nastavení dokončen. Chcete-li se vyhnout automatickému potvrzení, nastavte AUTOCOMMIT na 0.
Příklad 01: Zapnutý režim AutoCommit:
MySQL pracuje s fází Autocommit povolenou ve výchozím nastavení. Zajišťuje, že MySQL ukládá změny na disku, aby je vytvořil trvale, pokud spustíme dotaz, který upraví (změní) tabulku. Tah není nutné vrátit zpět. Zkusme to v režimu AUTOCOMMIT. Otevřete prostředí příkazového řádku MySQL a začněte zadáním hesla.
Vezměte příklad tabulky „knihy“, která byla vytvořena v databázi „data“. Právě teď jsme na něj zatím neprovedli žádný dotaz.
>> SELECT * FROM data.rezervovat;
Krok 2: Tento proces má aktualizovat „knihu“ tabulky. Aktualizujme hodnotu sloupce „Autor“, kde „Název“ knihy je „Domov“. Uvidíte, že změny byly úspěšně provedeny.
>> AKTUALIZACE dat.kniha SET Autor = 'Cristian Steward' KDE Jméno = 'Domov';
Při pohledu na aktualizovanou tabulku máme upravenou hodnotu autora, kde 'name' je 'Home'.
>> SELECT * FROM data.rezervovat;
Pojďme pomocí příkazu ROLLBACK vrátit změny jednoduše přidáním níže uvedeného dotazu. Vidíte, že ROLLBACK dotaz zde nefunguje, protože ukazuje, že „ovlivněno 0 řádků“.
>> ROLLBACK;
Můžete dokonce vidět i tabulku. Tabulka zatím nemá žádné změny po provedení příkazu ROLLBACK. To znamená, že ROLLBACK nefunguje, když máme ve výchozím nastavení zapnutý AUTOCOMMIT.
>> SELECT * FROM data.rezervovat;
Příklad 02: Režim AutoCommit vypnutý:
Chcete-li vrátit provedené změny, zkusme to s vypnutým režimem AUTOCOMMIT. Na stejném příkladu tabulky „kniha“ provedeme několik změn. Budeme používat deklaraci START TRANSACTION k deaktivaci fáze automatického potvrzení nebo jednoduše zadejte následující příkaz k vypnutí AUTOCOMMIT.
>> SET AUTOCOMMIT = 0;Řekněme, že máme ve své databázi stejnou „knihu“ tabulky a musíme v ní provést změny. Poté tyto změny znovu vraťte ke starým.
>> SELECT * FROM data.rezervovat;
Pokud jste nevypnuli režim AUTOCOMMIT, začněte s dotazem START TRANSACTION v prostředí příkazového řádku, jak je uvedeno níže.
>> ZAČNĚTE TRANSAKCI;
Aktualizujeme stejnou tabulku pomocí příkazu UPDATE nastavením „Autor“ na „Aliana“, kde „Název“ knihy bude „Sen“. Udělejte to pomocí níže uvedeného příkazu. Uvidíte, že změny budou provedeny úspěšně a efektivně.
>> AKTUALIZACE dat.kniha SET Autho = 'Aliana' WHERE Name = 'Dream';
Pojďme zkontrolovat, zda výše uvedený dotaz fungoval perfektně a provedl změny v tabulce nebo ne. Aktualizovanou tabulku můžete zkontrolovat pomocí níže uvedeného příkazu VÝBĚR jako vždy.
>> SELECT * FROM data.rezervovat;Můžete vidět, že dotaz fungoval skvěle, jak je znázorněno níže.
Nyní je řada na příkazu ROLLBACK k provedení jeho funkce. Zkuste příkaz ROLLBACK v příkazovém řádku vrátit poslední aktualizaci do tabulky.
>> ROLLBACK;
Pojďme zkontrolovat, zda dotaz ROLLBACK byl zpracován tak, jak by měl fungovat, nebo ne. K tomu musíte znovu zkontrolovat tabulku „rezervovat“ pomocí příkazu „VYBRAT“ jako vždy.
>> SELECT * FROM data.rezervovat;Z níže uvedeného výstupu můžete vidět, že ROLLBACK konečně fungoval. Vrátila změny provedené dotazem UPDATE v této tabulce.
Závěr:
To je vše pro transakce MySQL. Doufám, že vám tento průvodce pomůže pohodlně provádět transakce MySQL.