Condividi tramite


Transazioni in ODBC

Le transazioni in ODBC vengono gestite a livello di connessione. Quando un'applicazione completa una transazione, esegue il commit o il rollback di tutte le operazioni effettuate tramite tutti gli handle di istruzione nella connessione. Per eseguire il commit o il rollback di una transazione, le applicazioni devono chiamare SQLEndTran anziché eseguire un'istruzione COMMIT o ROLLBACK.

Un'applicazione chiama SQLSetConnectAttr per passare tra le due modalità ODBC di gestione delle transazioni:

  • Modalità autocommit

    Di ogni istruzione completata correttamente viene automaticamente eseguito il commit. Quando si utilizza la modalità autocommit, non sono necessarie altre funzioni di gestione delle transazioni.

  • Modalità di commit manuale

    Tutte le istruzioni eseguite sono incluse nella stessa transazione fino a quando questa non viene interrotta in modo esplicito chiamando SQLEndTran.

La modalità autocommit è la modalità di esecuzione delle transazioni predefinita per ODBC. Quando viene stabilita una connessione, questa è in modalità autocommit fino a quando non si chiama SQLSetConnectAttr per passare alla modalità di commit manuale disattivando la modalità autocommit. Quando un'applicazione disattiva l'autocommit, l'istruzione successiva inviata al database avvia una transazione. La transazione resta effettiva fino a quando l'applicazione non chiama SQLEndTran con l'opzione SQL_COMMIT o SQL_ROLLBACK. Il comando inviato al database dopo SQLEndTran avvia la transazione successiva.

Se un'applicazione passa dalla modalità di commit manuale alla modalità autocommit, il driver esegue il commit di tutte le transazioni attualmente aperte nella connessione.

Le applicazioni ODBC non devono utilizzare istruzioni per transazioni Transact-SQL quali BEGIN TRANSACTION, COMMIT TRANSACTION o ROLLBACK TRANSACTION, in quanto tali istruzioni possono provocare un comportamento imprevedibile nel driver. Un'applicazione ODBC deve essere eseguita in modalità autocommit e non utilizzare alcuna funzione o istruzione di gestione oppure in modalità di commit manuale e utilizzare la funzione ODBC SQLEndTran di ODBC per eseguire il commit o il rollback delle transazioni.

Vedere anche

Concetti