Sdílet prostřednictvím


Transakce (rozhraní 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átite transakci zpět. Pokud nepoužijete transakce, pak jsou změny zdroje dat potvrzeny automatiky 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 tranksakce 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 vrátit transakci změt do stavu, než byla potvrzena. V takovém případě se žádné změny, které byly provedeny tranksakcí, 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 tématu Sada záznamů: Hromadné načítání záznamů (rozhraní 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:

Viz také

Koncepty

Rozhraní ODBC (Open Database Connectivity)