Sdílet prostřednictvím


Transakce ODBC

Transakce je jednotka práce, která se provádí jako jedna, atomická operace; to znamená, že operace bude úspěšná nebo selže jako celek. Zvažte například převod peněz z jednoho bankovního účtu na jiný. To zahrnuje dva kroky: stažení peněz z prvního účtu a jeho uložení do druhé. Je důležité, aby oba kroky byly úspěšné; není přijatelné, aby jeden krok uspěl a druhý selhal. Databáze, která podporuje transakce, je schopna to zaručit.

Transakce je možné dokončit buď potvrzením , nebo vrácením zpět. Při potvrzení transakce se změny provedené v této transakci stávají trvalými. Při vrácení transakce zpět, ovlivněné řádky jsou vráceny do stavu, ve který byly před zahájením transakce. Pokud chcete rozšířit příklad převodu účtu, aplikace provede jeden příkaz SQL k inkasu prvního účtu a jiný příkaz SQL k započtení druhého účtu. Pokud jsou oba příkazy úspěšné, aplikace pak potvrdí transakci. Pokud ale některý z příkazů z nějakého důvodu selže, aplikace vrátí transakci zpět. V obou případech aplikace zaručuje konzistentní stav na konci transakce.

Jedna transakce může zahrnovat více databázových operací, ke kterým dochází v různých časech. Pokud by jiné transakce měly úplný přístup k průběžným výsledkům, mohou transakce vzájemně kolidovat. Předpokládejme například, že jedna transakce vloží řádek, druhá transakce přečte tento řádek a první transakce se vrátí zpět. Druhá transakce teď obsahuje data pro řádek, který neexistuje.

Chcete-li tento problém vyřešit, existují různá schémata pro izolaci transakcí od sebe navzájem. Izolace transakcí je obecně implementována uzamčením řádků, které brání více než jedné transakci používat stejný řádek současně. V některých databázích může uzamčení řádku také uzamknout další řádky.

Se zvýšenou izolací transakcí se snižuje souběžnost nebo schopnost dvou transakcí používat stejná data ve stejnou dobu. Další informace naleznete v tématu Nastavení úrovně izolace transakce.

Tato část obsahuje následující témata.