Transakce (ODBC)
Toto téma platí pro třídy knihovny MFC rozhraní ODBC.
Transakce je způsob, jak seskupit nebo dávkovat řadu aktualizací zdroje dat tak, že jsou všechny najednou potvrzené nebo není potvrzena ani jedna, pokud vrátíte transakci zpět.Pokud nepoužijete transakce, pak jsou změny zdroje dat potvrzeny automaticky, než aby čekaly na vyžádání potvrzení.
[!POZNÁMKA]
Ne všechny ovladače databáze ODBC podporují transakce.Volání členské funkce CanTransact Vašeho objektu CDatabase nebo CRecordset zjistí, zda ovladač podporuje transakce pro danou databázi.Všimněte si, že CanTransact Vám neoznámí, zda zdroj dat poskytuje plnou podporu transakcí.Musíte také zavolat CDatabase::GetCursorCommitBehavior a CDatabase::GetCursorRollbackBehavior po CommitTrans a Rollback pro zkontrolování účinku transakce na otevřený objekt CRecordset.
Volání členských funkcí AddNew a Edit objektu CRecordset ovlivní zdroj dat okamžitě pokud zavoláte Update.Volání Delete se také projeví okamžitě.Naopak můžete použít transakce, skládající se z více volání AddNew, Edit, Update, a Delete, které jsou prováděny, ale nejsou potvrzeny, dokud nezavoláte explicitně CommitTrans.Vytvořením transakce můžete provést řadu takových volání a přitom zachovat možnost vrátit je zpět.Pokud je kritický zdroj nedostupný nebo jiné podmínky zabraňují dokončení celé transakce, můžete transakci místo potvrzení vrátit zpět.V takovém případě se žádné změny, které byly provedeny transakcí, neprojeví ve zdroji dat.
[!POZNÁMKA]
Třída CRecordset aktuálně nepodporuje aktualizace zdroje dat, pokud máte naimplementováno hromadné načítání řádků. To znamená, že nemůžete provádět volání AddNew, Edit, Delete nebo Update.Můžete si však napsat své vlastní funkce pro provádění aktualizací a ty poté zavolat v rámci dané transakce.Další informace o hromadném načítání řádku, naleznete v sady záznamů: Fetching Records in Bulk (ODBC).
[!POZNÁMKA]
Kromě ovlivnění Vaší sady záznamů, ovlivňují transakce SQL příkazy, které můžete přímo provádět tak dlouho, dokud používáte rozhraní ODBC HDBC přidružené s Vaším objektem CDatabase nebo rozhraním ODBC HSTMT na základě HDBC.
Transakce jsou zvláště užitečné, pokud máte více záznamů, které musí být současně aktualizovány.V tomto případě chcete zabránit polovičnímu dokončení transakce, což může nastat, pokud nastane výjimka před provedením poslední aktualizace.Seskupení těchto aktualizací do transakce umožňuje obnovení (vrácení zpět) změn a vrácení záznamů do stavu před transakcí.Například bankovní převod peněz z účtu A na účet B nebo výběr z účtu A a vklad na účet B, musí být zpracován celý správně nebo musí celá transakce selhat.
Ve třídách databází provádíte transakce prostřednictvím objektů CDatabase. Objekt CDatabase představuje připojení ke zdroji dat a jednu nebo více sad záznamů přidruženou s objektem CDatabase pracujícím v tabulkách databáze pomocí členské funkce sady záznamů.
[!POZNÁMKA]
Je podporována pouze jedna úroveň transakcí.Nemůžete vnořovat transakce a transakce nemohou zahrnovat více databázových objektů.
Další informace o tom, jak jsou prováděny transakce, naleznete v následujících tématech:
Transakce: Provádění transakcí v sadě záznamů (rozhraní ODBC)
Transakce: Jak transakce ovlivňují aktualizace (rozhraní ODBC)