Transakce: Jak transakce ovlivňují aktualizace (rozhraní ODBC)
Aktualizace zdroje dat jsou spravovány během transakcí prostřednictvím využití editované vyrovnávací paměti (stejná metoda se používá i mimo transakce). Pole datových členů sady záznamů slouží jako editovaná vyrovnávací paměť, obsahující aktuální záznam, který sada záznamů dočasně zálohuje během operace AddNew nebo Edit. Během operace Delete není aktuální záznam v rámci transakce zálohován. Další informace o editované vyrovnávací paměti a o tom, jak editovaná vyrovnávací paměť ukládá aktuální záznam, naleznete v tématu Sada záznamů: Jak sady záznamů aktualizují záznamy (ODBC).
Poznámka
Pokud máte naimplementované hromadné načítání řádků, nemůžete volat AddNew, Edit nebo Delete. Místo toho musíte napsat své vlastní funkce pro provádění aktualizací ve zdoji dat. Další informace o hromadném načítání řádku, naleznete v tématu Sada záznamů: Hromadné načítání záznamů (rozhraní ODBC).
Během transakce mohou být operace AddNew, Edit a Delete potvrzeny nebo vráceny zpět. Účinky CommitTrans a Rollback mohou způsobit, že nebude aktuální záznam obnoven v upravené vyrovnávací paměti. Chtete-li se ujistit, že je aktuální záznam správně obnoven, je důležité pochopit, jak pracují členské funkce CommitTrans a Rollback z CDatabase s aktualizačními funkcemi z CRecordset.
Jak CommitTrans ovlivňuje aktualizace
Následující tabulka vysvětluje účinky CommitTrans v transakcích.
Jak ovlivňuje CommitTrans aktualizace
Operace |
Stav zdroje dat |
---|---|
AddNew a Update a poté CommitTrans |
Nové záznamy jsou vloženy do zdroje dat. |
AddNew (bez Update) a poté CommitTrans |
Nový záznam je ztracen. Záznam nebyl vložen do zdroje dat. |
Edit a Update a poté CommitTrans |
Úpravy potvrzené ve zdroji dat. |
Edit (bez Update) a poté CommitTrans |
Úpravy záznamu jsou ztraceny. Záznam zůstává ve zdroji dat nezměněn. |
Delete a poté CommitTrans |
Záznamy jsou odstraněny ze zdroje dat. |
Jak Rollback ovlivňuje transakce
Následující tabulka vysvětluje účinky Rollback v transakcích.
Jak Rollback ovlivňuje transakce
Operace |
Stav aktuálního záznamu |
Musíte také |
Stav zdroje dat |
---|---|---|---|
AddNew a Update a poté Rollback |
Obsah aktuálního záznamu je dočasně uložen pro vytvoření prostoru pro nový záznam. Nový záznam je zadán do upravené vyrovnávací paměti. Po zavolání Update je obnoven aktuální záznam do upravené vyrovnávací paměti. |
|
Pomocný údaj ve zdroji dat, vytvořený při Update je stornován. |
AddNew (bez Update) a poté Rollback |
Obsah aktuálního záznamu je dočasně uložen pro vytvoření prostoru pro nový záznam. Upravená vyrovnávací paměť obsahuje nový záznam. |
Opětovně zavolejte AddNew pro obnovení nového záznamu a vyprázdnění upravené vyrovnávací paměti. Nebo zavolejte Move(0) pro obnovení starších hodnot v upravené vyrovnávací paměti. |
Protože nebyla zavolána operace Update, nebyly provedeny žádné změny ve zdroji dat. |
Edit a Update a poté Rollback |
Neupravená verze aktuálního záznamu je dočasně uložena. Úpravy jsou provedeny na obsah upravené vyrovnávací paměti. Po zavolání Update je neupravená verze záznamu stále dočasně uložena. |
Dynamická sada: Posun mimo aktuální záznam poté vrátí zálohu neupravené verze záznamu do upravené vyrovnávací paměti. Snímek: Zavolání Requery aktualizuje sadu záznamů ze zdroje dat. |
Změny ve zdroji dat, provedené pomocí Update jsou stornovány. |
Edit (bez Update) a poté Rollback |
Neupravená verze aktuálního záznamu je dočasně uložena. Úpravy jsou provedeny na obsah upravené vyrovnávací paměti. |
Opětovně zavolejte Edit pro obnovení neupravené verze záznamu do upravené vyrovnávací paměti. |
Protože nebyla zavolána operace Update, nebyly provedeny žádné změny ve zdroji dat. |
Delete a poté Rollback |
Obsah aktuálního záznamu je odstraněn. |
Zavolejte Requery pro obnovení obsahu aktuálního záznamu ze zdroje dat. |
Odstranění dat ze zdroje dat je stornováno. |
Viz také
Odkaz
Koncepty
Transakce: Provádění transakcí v sadě záznamů (rozhraní ODBC)