Dela via


Transaktionsstöd

Graden av stöd för transaktioner är drivrutinsdefinierad. ODBC är utformat för att implementeras på en databas med en användare eller stationär dator som inte behöver hantera flera uppdateringar av sina data. Dessutom stöder vissa databaser transaktioner endast för DML-uttryck (Data Manipulation Language) i SQL; det finns begränsningar eller särskilda transaktionssemantiker för användning av DDL (Data Definition Language) när en transaktion är aktiv. Det kan alltså finnas transaktionsstöd för flera samtidiga uppdateringar av tabeller, men inte för att ändra antalet och definitionen av tabeller under en transaktion.

Ett program avgör om transaktioner stöds, om DDL kan ingå i en transaktion och eventuella specialeffekter av att inkludera DDL i en transaktion genom att anropa SQLGetInfo med alternativet SQL_TXN_CAPABLE. Mer information finns i funktionsbeskrivningen för SQLGetInfo .

Om drivrutinen inte stöder transaktioner men programmet har möjlighet (med ett annat API än ODBC) att låsa och låsa upp data, kan program uppnå transaktionsstöd genom att låsa och låsa upp poster och tabeller efter behov. För att implementera exemplet med kontoöverföring låser programmet posterna för båda kontona, kopierar de aktuella värdena, debiterar det första kontot, krediterar det andra kontot och låser upp posterna. Om några steg misslyckades återställer programmet kontona med hjälp av kopiorna.

Även datakällor som stöder transaktioner kanske inte har stöd för fler än en transaktion i taget i en viss miljö. Program anropar SQLGetInfo med alternativet SQL_MULTIPLE_ACTIVE_TXN för att avgöra om en datakälla kan stödja samtidiga aktiva transaktioner på mer än en anslutning i samma miljö. Eftersom det finns en transaktion per anslutning är detta bara intressant för program som har flera anslutningar till samma datakälla.