Transakce (ODBC)
Toto téma se vztahuje na třídy MFC ODBC.
Transakce je způsob, jak seskupit nebo dávkot řadu aktualizací zdroje dat, aby všechny potvrzené najednou nebo žádné byly potvrzeny, pokud vrátíte transakci zpět. Pokud transakci nepoužíváte, změny ve zdroji dat se potvrdí automaticky, místo aby byly potvrzeny na vyžádání.
Poznámka:
Ne všechny ovladače databáze ODBC podporují transakce. CanTransact
Volání členské funkce CDatabase nebo CRecordset objektu určit, zda ovladač podporuje transakce pro danou databázi. Všimněte si, že vám neřekne, CanTransact
zda zdroj dat poskytuje plnou podporu transakcí. Musíte také zavolat CDatabase::GetCursorCommitBehavior
a CDatabase::GetCursorRollbackBehavior
za CommitTrans
a Rollback
zkontrolovat účinek transakce na otevřený CRecordset
objekt.
AddNew
Volání a Edit
členské funkce CRecordset
objektu ovlivňují zdroj dat okamžitě při volání Update
. Delete
volání se projeví také okamžitě. Naproti tomu můžete použít transakci sestávající z více volání AddNew
, Edit
, Update
a Delete
, které jsou provedeny, ale nejsou potvrzeny, dokud volání CommitTrans
explicitně. Vytvořením transakce můžete provést řadu takových volání a zároveň zachovat možnost jejich vrácení zpět. Pokud je kritický prostředek nedostupný nebo nějaká jiná podmínka brání dokončení celé transakce, můžete vrátit transakci zpět místo potvrzení. V takovém případě nemá žádný vliv na zdroj dat žádné změny, které patří k transakci.
Poznámka:
Třída v současné době nepodporuje aktualizace zdroje dat, CRecordset
pokud jste implementovali hromadné načítání řádků. To znamená, že nemůžete volat AddNew
, Edit
, Delete
nebo Update
. Můžete ale napsat vlastní funkce, které budou provádět aktualizace, a pak tyto funkce volat v rámci dané transakce. Další informace o hromadném načítání řádků naleznete v tématu Sada záznamů: Načítání záznamů hromadně (ODBC).
Poznámka:
Kromě ovlivnění sady záznamů ovlivňují transakce příkazy SQL, které spouštíte přímo, pokud používáte ROZHRANÍ ODBC HDBC přidružené k vašemu CDatabase
objektu nebo ROZHRANÍ ODBC HSTMT založené na daném HDBC.
Transakce jsou zvlášť užitečné, pokud máte více záznamů, které je třeba aktualizovat současně. V takovém případě se chcete vyhnout napůl dokončené transakci, například pokud byla vyvolán výjimka před provedením poslední aktualizace. Seskupení těchto aktualizací do transakce umožňuje obnovení (vrácení zpět) ze změn a vrátí záznamy do stavu pretransaction. Pokud například bankovní převody peněz z účtu A na účet B, jak výběr z A, tak vklad do B musí být úspěšně zpracovat finanční prostředky správně nebo celá transakce musí selhat.
V databázových třídách provádíte transakce prostřednictvím CDatabase
objektů. Objekt CDatabase
představuje připojení ke zdroji dat a jeden nebo více sad záznamů přidružených k danému CDatabase
objektu pracují s tabulkami databáze prostřednictvím členských funkcí sady záznamů.
Poznámka:
Podporuje se pouze jedna úroveň transakcí. Transakce nelze vnořit ani nelze provádět napříč více databázovými objekty.
Následující témata obsahují další informace o tom, jak se transakce provádějí: