Sdílet prostřednictvím


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, Updatea 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, Deletenebo 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í:

Viz také

Open Database Connectivity (ODBC)