Podpora transakcí

Stupeň podpory transakcí je definován ovladačem. Rozhraní ODBC je navržené tak, aby bylo implementováno v jednouživatelové nebo desktopové databázi, která nemusí spravovat více aktualizací svých dat. Kromě toho některé databáze, které podporují transakce, to dělají pouze pro příkazy jazyka DML (Data Manipulat Language) JAZYKa SQL; existují omezení nebo speciální sémantika transakcí týkající se použití jazyka DDL (Data Definition Language), pokud je transakce aktivní. To znamená, že existuje podpora transakcí pro více souběžných aktualizací tabulek, ale ne pro změnu počtu a definice tabulek během transakce.

Aplikace určuje, zda transakce jsou podporovány, zda DDL lze zahrnout do transakce, a jakékoli zvláštní účinky zahrnutí DDL do transakce voláním SQLGetInfo s možností SQL_TXN_CAPABLE. Další informace naleznete v popisu funkce SQLGetInfo .

Pokud ovladač nepodporuje transakce, ale aplikace má možnost (pomocí jiného rozhraní API než ODBC) uzamknout a odemknout data, aplikace mohou dosáhnout podpory transakcí uzamčením a odemknutím záznamů a tabulek podle potřeby. Pokud chcete implementovat příklad převodu účtu, aplikace uzamkne záznamy pro oba účty, zkopíruje aktuální hodnoty, inkasuje první účet, připíše druhý účet a odemkne záznamy. Pokud nějaké kroky selhaly, aplikace resetuje účty pomocí kopií.

Dokonce i zdroje dat, které podporují transakce, nemusí být schopny podporovat více než jednu transakci najednou v určitém prostředí. Aplikace volají SQLGetInfo s možností SQL_MULTIPLE_ACTIVE_TXN určit, zda zdroj dat může podporovat souběžné aktivní transakce ve více než jednom připojení ve stejném prostředí. Vzhledem k tomu, že existuje jedna transakce na připojení, je to zajímavé pouze pro aplikace, které mají více připojení ke stejnému zdroji dat.