Delen via


Transactieondersteuning

De mate van ondersteuning voor transacties is door het stuurprogramma gedefinieerd. ODBC is ontworpen om te worden geïmplementeerd op een individuele gebruiker of desktopdatabase die niet meerdere updates voor de gegevens hoeft te beheren. Bovendien doen sommige databases die transacties ondersteunen dit alleen voor de DML-instructies (Data Manipulation Language) van SQL; er zijn beperkingen of speciale transactiesemantiek met betrekking tot het gebruik van DDL (Data Definition Language) wanneer een transactie actief is. Dat wil bijvoorbeeld dat er transactieondersteuning is voor meerdere gelijktijdige updates voor tabellen, maar niet voor het wijzigen van het aantal en de definitie van tabellen tijdens een transactie.

Een toepassing bepaalt of transacties worden ondersteund, of DDL kan worden opgenomen in een transactie en eventuele speciale effecten van het opnemen van DDL in een transactie door SQLGetInfo aan te roepen met de optie SQL_TXN_CAPABLE. Zie de beschrijving van de functie SQLGetInfo voor meer informatie.

Als het stuurprogramma geen transacties ondersteunt, maar de toepassing de mogelijkheid heeft (met een andere API dan ODBC) gegevens te vergrendelen en te ontgrendelen, kunnen toepassingen transactieondersteuning bereiken door records en tabellen indien nodig te vergrendelen en te ontgrendelen. Om het voorbeeld van accountoverdracht te implementeren, vergrendelt de toepassing de records voor beide accounts, kopieert u de huidige waarden, debiteert u het eerste account, crediteert u het tweede account en ontgrendelt u de records. Als er stappen zijn mislukt, worden de accounts opnieuw ingesteld met behulp van de kopieën.

Zelfs gegevensbronnen die transacties ondersteunen, kunnen mogelijk niet meer dan één transactie tegelijk binnen een bepaalde omgeving ondersteunen. Toepassingen roepen SQLGetInfo aan met de optie SQL_MULTIPLE_ACTIVE_TXN om te bepalen of een gegevensbron gelijktijdige actieve transacties op meerdere verbindingen in dezelfde omgeving kan ondersteunen. Omdat er één transactie per verbinding is, is dit alleen interessant voor toepassingen die meerdere verbindingen met dezelfde gegevensbron hebben.