Transakce v SQL - Kroky k provedení transakcí s příklady

Obsah:

Anonim

Úvod do transakcí v SQL

Transakce v SQL obecně známá jako provádění plateb (odesílání, přijímání, nákup atd.), Ale pokud jde o technické oblasti, pak je to způsob, jak aktualizovat logickou jednotku informací v databázi.

Transakce je implementace jedné nebo více změn do databáze. Můžeme seskupit více dotazů SQL a spustit v transakci najednou. Všechny dotazy SQL by byly provedeny najednou nebo by byly všechny vráceny zpět. To by mělo pouze dva výsledky, buď úspěch, nebo neúspěch.

Transakce jednou potvrzená nemůže být vrácením, může být vrácena pouze v případě, že transakce není potvrzena. MYSQL automaticky provede změny v databázi, pokud jsou všechny dotazy úspěšně provedeny. Chcete-li explicitně provést změny v databázi, musíte nejprve zakázat automatické potvrzení pomocí příkazu -

Syntaxe: SET autocommit = 0;

Vlastnosti transakce

Níže jsou uvedeny důležité vlastnosti transakcí. Každá transakce musí tyto vlastnosti následovat

1. Atomicita

Transakce musí být atomická, pro určitou logickou jednotku by měla být dokončena střední manipulace s daty. Tato vlastnost zajišťuje, že ke změnám dat došlo zcela jinak, aby se transakce vrátila zpět.

2. Konzistence

Po dokončení transakce budou všechny dostupné záznamy konzistentní po celou dobu transakce. Tato vlastnost zajišťuje, že vlastnost databáze se po úspěšném odevzdání změnila nebo ne.

3. Izolace

Izolace označuje změny dat u určité logické jednotky, které by neměly mít vliv na jinou jednotku. Umožňuje transakci provádět samostatně.

4. Trvanlivost

Změny provedené během transakcí by měly být v systému trvalé. V případě systémové chyby zajišťuje tato vlastnost také to, že ke změnám dat dochází nebo ne.

Výše uvedená vlastnost transakce se také nazývá ACID vlastnost.

Kroky transakce

1. Začněte

K transakci může dojít ve více provedeních SQL, ale všechny SQL by měly běžet najednou. Pokud některá transakce selže, bude celá transakce vrácena. Příkaz pro zahájení transakce je „START TRANSAKCE“. Začíná zkratka pro START TRANSAKCI.

Syntaxe: START TRANSAKCE;

2. Závazek

Potvrzení trvale odráží změny v databázi. Příkaz pro zahájení transakce je „COMMIT“.

Syntaxe: COMMIT;

3. Vrácení

Vrácení se používá k vrácení změn, tj. Záznam se nezmění, byl by v předchozím stavu. Příkaz pro zahájení transakce je „ROLLBACK“.

Syntaxe: ROLLBACK;

4. Savepoint

SAVEPOINT je také výpis transakcí. Tento příkaz slouží k vytvoření bodu úložiště v systému, takže operace ROLLBACK může dosáhnout stavu bodu uložení.

5. Uvolněte Savepoint

RELEASE SAVEPOINT je příkaz k uvolnění bodu úložiště a paměti spotřebovaného systémem při vytváření bodu uložení.

Syntaxe: RELEASE SAVEPOINT SP

Poznámky - SP je název úložného prostoru, když byl tento úložný bod vytvořen před zahájením transakce.

6. Nastavte transakci

Příkaz SET TRANSACTION se používá k určení atributu transakce, jako je daná transakce pouze pro čtení nebo pro čtení a zápis.

Syntaxe : NASTAVTE TRANSAKCI (POUZE PŘEČTĚTE SI / PŘEČTĚTE);

Transakce se používá k provedení složitých změn v databázi. Používá se zejména při změnách bankovních informací na relační databázi.

Transakce je podporována motorem MYSQL InnoDB. Ve výchozím nastavení je automatické odevzdání povoleno, a proto vždy, když se jakýkoli příkaz SQL provede po provedení potvrzení, automaticky dojde.

Transakce pomocí SQL

Příklad č. 1

Bankovní transakce: Účet odepsán z částky 50000 od spořicího účtu osoby a odešel tuto částku na úvěrový účet A.

Zahájit transakci: Tato zahajovací transakce převede všechny dotazy SQL na jednu jednotku transakce.

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

Tento dotaz SQL odečte částku z existujícího zůstatku účtu.

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

Tento dotaz SQL přidá částku na uživatelský úvěrový účet.

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

Tento dotaz SQL vloží nový záznam do tabulky podrobností o transakcích, tato tabulka obsahuje podrobnosti o všech transakcích uživatelů. Pokud byl celý dotaz úspěšně proveden, je třeba provést příkaz COMMIT, protože změny musí být trvale uloženy v databázi.

Potvrzení: Tento příkaz potvrzení uloží změny vyvolané transakcí do databáze. Pokud některá z transakcí během provádění selže, měl by být proveden příkaz ROLLBACK, který vrátí celou transakci

Vrácení zpět: Vrácení dojde, jakmile jakýkoli dotaz selže během provádění.

Příklad č. 2

Inventární transakce: V daných položkách je k dispozici 6 položek.

Provedení následujícího příkazu START TRANSAKCE k zahájení transakce.

Nyní spusťte příkaz SET AUTOCOMMIT = 0 ; zakázat automatické potvrzování

Nyní provedením následujícího příkazu odeberete záznam z tabulky položek

Nyní je k dispozici záznam v tabulce 4, tj. Záznamy dočasně odstraněné z položek tabulky

Nyní provedením příkazu ROLLBACK pro vrácení změn bude odstraněný záznam k dispozici v položkách tabulky jako předtím před zahájením transakce

Opět platí, že pokud použijete stejnou operaci odstranění, operace COMMIT po změně by byla trvale uložena do databáze

Nyní vidíme, že po příkazu ROLLBACK byl záznam stále v novém stavu, to znamená, že jakmile provedené změny provedené operací COMMIT nelze vrátit, protože trvale provádí změny v databázi;

Výhody použití transakce v SQL

a) Použití transakce zvyšuje výkon , když vložíte 1000 záznamů pomocí transakcí, v takovém případě by byl čas kratší než normální vložení. Stejně jako v normální transakci by se pokaždé, když se příkaz COMMIT odehrává po každém provedení dotazu, a to by zvýšilo dobu provádění pokaždé, zatímco v transakci není nutné vykonávat příkaz COMMIT po každém dotazu SQL. COMMIT na konci by trvale odrážel všechny změny v databázi. Také při použití transakce by vrácení změn bylo mnohem jednodušší než normální transakce. ROLLBACK vrátí všechny změny najednou a udržuje systém v předchozím stavu.

b) Transakce zajišťuje integritu dat v relační databázi. Většina databáze používá k udržování dat více tabulek a při provádění aktualizací může dojít ke změnám ve více tabulkách, pokud některý z dotazů SQL selže, pak by transakce udržovala data nezměněná.

Závěr

Použití transakcí je nejlepší postup při aktualizaci informací logické jednotky v relační databázi. Pro implementaci transakcí by měl databázový stroj podporovat transakci jako InnoDB. Transakce jako jednotka příkazů SQL může být vrácena najednou pomocí jediného příkazu ROLLBACK. Transakce zajišťuje integritu dat a zvyšuje výkon databáze.

Doporučené články

Toto je průvodce transakcemi v SQL. Zde diskutujeme úvod, vlastnosti, kroky, příklady transakcí v SQL spolu s výhodami použití transakcí v SQL.

  1. Co je to SQL
  2. Nástroje pro správu SQL
  3. Zobrazení SQL
  4. Typy připojení na serveru SQL
  5. Top 6 typů spojení v MySQL s příklady